(self)
| 473 | self.inbuf += read |
| 474 | |
| 475 | def handle(self): |
| 476 | self.fill() |
| 477 | while 1: |
| 478 | if len(self.inbuf) >= (self.want or HDR_LEN): |
| 479 | (s1, s2, channel, cmd, datalen) = \ |
| 480 | struct.unpack('!ccHHH', self.inbuf[:HDR_LEN]) |
| 481 | assert s1 == b('S') |
| 482 | assert s2 == b('S') |
| 483 | self.want = datalen + HDR_LEN |
| 484 | if self.want and len(self.inbuf) >= self.want: |
| 485 | data = self.inbuf[HDR_LEN:self.want] |
| 486 | self.inbuf = self.inbuf[self.want:] |
| 487 | self.want = 0 |
| 488 | self.got_packet(channel, cmd, data) |
| 489 | else: |
| 490 | break |
| 491 | |
| 492 | def pre_select(self, r, w, x): |
| 493 | _add(r, self.rfile) |
no test coverage detected