(self)
| 428 | self.inbuf += b |
| 429 | |
| 430 | def handle(self): |
| 431 | self.fill() |
| 432 | #log('inbuf is: (%d,%d) %r\n' |
| 433 | # % (self.want, len(self.inbuf), self.inbuf)) |
| 434 | while 1: |
| 435 | if len(self.inbuf) >= (self.want or HDR_LEN): |
| 436 | (s1,s2,channel,cmd,datalen) = \ |
| 437 | struct.unpack('!ccHHH', self.inbuf[:HDR_LEN]) |
| 438 | assert(s1 == 'S') |
| 439 | assert(s2 == 'S') |
| 440 | self.want = datalen + HDR_LEN |
| 441 | if self.want and len(self.inbuf) >= self.want: |
| 442 | data = self.inbuf[HDR_LEN:self.want] |
| 443 | self.inbuf = self.inbuf[self.want:] |
| 444 | self.want = 0 |
| 445 | self.got_packet(channel, cmd, data) |
| 446 | else: |
| 447 | break |
| 448 | |
| 449 | def pre_select(self, r, w, x): |
| 450 | _add(r, self.rsock) |
no test coverage detected