예제 #1
0
 def known_completed(self, commands):
     completed = RangedSet()
     for c in self._completed.ranges:
         for kc in commands.ranges:
             if c.lower in kc and c.upper in kc:
                 break
         else:
             completed.add_range(c)
     self._completed = completed
예제 #2
0
 def read_sequence_set(self):
     result = RangedSet()
     size = self.read_uint16()
     nranges = size / 8
     while nranges > 0:
         lower = self.read_sequence_no()
         upper = self.read_sequence_no()
         result.add(lower, upper)
         nranges -= 1
     return result
예제 #3
0
 def session_flush(self, ch, f):
   rcv = ch.session.receiver
   if f.expected:
     if rcv.next_id == None:
       exp = None
     else:
       exp = RangedSet(rcv.next_id)
     ch.session_expected(exp)
   if f.confirmed:
     ch.session_confirmed(rcv._completed)
   if f.completed:
     ch.session_completed(rcv._completed)
예제 #4
0
 def __init__(self, session):
     self.session = session
     self.next_id = serial(0)
     self.commands = []
     self._completed = RangedSet()
예제 #5
0
 def __init__(self, session):
     self.session = session
     self.next_id = None
     self._completed = RangedSet()