target_requests_outstanding = 3 # must match; subject to [limits] on server
max_requests_outstanding = 4 # used by client
max_batch_up = 4000 # used by client
+http_timeout = 30 # used by client
#[server] or [<client>] overrides
ipif = userv root ipif %(local)s,%(peer)s,%(mtu)s,slip %(rnets)s
cfg = ConfigParser()
optparser = OptionParser()
+_mimetrans = str.maketrans(b'-'+slip.esc, slip.esc+'-')
+def mime_translate(s):
+ # SLIP-encoded packets cannot contain ESC ESC.
+ # Swap `-' and ESC. The result cannot contain `--'
+ return s.translate(_mimetrans)
+
class ConfigResults:
def __init__(self, d = { }):
self.__dict__ = d
return True
- def popleft(self):
- # caller must have checked nonempty
- try: (dummy, packet) = self._pq[0]
- except IndexError: return None
- return packet
+ def process(self, sizequery, moredata, max_batch):
+ # sizequery() should return size of batch so far
+ # moredata(s) should add s to batch
+ while True:
+ try: (dummy, packet) = self._pq[0]
+ except IndexError: break
+
+ encoded = slip.encode(packet)
+ sofar = sizequery()
+
+ if sofar > 0:
+ if sofar + len(slip.delimiter) + len(encoded) > max_batch:
+ break
+ moredata(slip.delimiter)
+
+ moredata(encoded)
+ self._pq.popLeft()
#---------- error handling ----------
def crash_on_defer(defer):
defer.addErrback(lambda err: crash(err))
-def crash_on_critical(event):
+vdef crash_on_critical(event):
if event.get('log_level') >= LogLevel.critical:
crash(twisted.logger.formatEvent(event))