a FILTER function is given then apply it to the information from the
database before returning it.
"""
- attr = me.__dict__.get(key, default)
- if attr is _magic:
- raise T.TripeJobError('malformed-peer', me.name, 'missing-key', key)
- elif filter is not None:
- attr = filter(attr)
- return attr
+ try:
+ attr = me.__dict__[key]
+ except KeyError:
+ if default is _magic:
+ raise T.TripeJobError('malformed-peer', me.name, 'missing-key', key)
+ return default
+ else:
+ if filter is not None: attr = filter(attr)
+ return attr
def has(me, key):
"""
me._ping()
elif code == 'FAIL':
S.notify('connect', 'ping-failed', me._peer, *stuff)
- if not stuff:
- pass
- elif stuff[0] == 'unknown-peer':
- me._pinger.kill(me._peer)
- elif stuff[0] == 'ping-send-failed':
- me._reconnect()
+ if not stuff: pass
+ elif stuff[0] == 'unknown-peer': me._pinger.kill(me._peer)
+ elif stuff[0] == 'ping-send-failed': me._reconnect()
elif code == 'INFO':
outcome = stuff[0]
if outcome == 'ping-ok' and me._sabotage:
outcome = 'ping-timeout'
if outcome == 'ping-ok':
- if me._failures > 0:
- S.warn('connect', 'ping-ok', me._peer)
+ if me._failures > 0: S.warn('connect', 'ping-ok', me._peer)
t = float(stuff[1])
me._last = '%.1fms' % t
me._sigma_t += t
if peer.name in S.list():
S.kill(peer.name)
try:
- booltrue = ['t', 'true', 'y', 'yes', 'on']
S.add(peer.name,
- tunnel = peer.get('tunnel', None),
- keepalive = peer.get('keepalive', None),
- key = peer.get('key', None),
- priv = peer.get('priv', None),
- mobile = peer.get('mobile', 'nil') in booltrue,
- cork = peer.get('cork', 'nil') in booltrue,
+ tunnel = peer.get('tunnel', default = None),
+ keepalive = peer.get('keepalive', default = None),
+ key = peer.get('key', default = None),
+ priv = peer.get('priv', default = None),
+ mobile = peer.get('mobile', filter = boolean, default = False),
+ cork = peer.get('cork', filter = boolean, default = False),
*addr)
except T.TripeError, exc:
raise T.TripeJobError(*exc.args)