- 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()