def test_all_points_extra(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra for point in range(origmsglen+1, len(msg)): rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() rcv.addMore(msg[:point]) assert rcv.isDone() assert not rcv.is_empty() print(rcv.completed()) rmsg, rextra = rcv.completed() assert rmsg == message assert rextra == extra[:point-origmsglen]
def test_all_points_extra(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra for point in range(origmsglen + 1, len(msg)): rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() rcv.addMore(msg[:point]) assert rcv.isDone() assert not rcv.is_empty() print(rcv.completed()) rmsg, rextra = rcv.completed() assert rmsg == message assert rextra == extra[:point - origmsglen]
class TCPIncoming(PauseWithBackoff): def __init__(self, acceptResponse): super(TCPIncoming, self).__init__() self._aResp = acceptResponse self._rData = ReceiveBuffer(serializer.loads) self._expires = datetime.now() + MAX_INCOMING_SOCKET_PERIOD self._aResp[0].setblocking(0) # Disable Nagle to transmit headers and acks asap self._aResp[0].setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self._openSock = True self.failCount = 0 @property def socket(self): return self._aResp[0] if self._openSock else None @property def fromAddress(self): return ActorAddress(TCPv4ActorAddress(*(self._aResp[1]))) def delay(self): now = datetime.now() # n.b. include _pauseUntil from PauseWithBackoff return max( timedelta(seconds=0), min(self._expires - now, getattr(self, '_pauseUntil', self._expires) - now)) def addData(self, newData): self._rData.addMore(newData) def remainingSize(self): return self._rData.remainingAmount() def receivedAllData(self): return self._rData.isDone() @property def data(self): return self._rData.completed()[0] def close(self): s = self.socket if s: self._openSock = False _safeSocketShutdown(s) def __del__(self): s = self.socket if s: self._openSock = False _safeSocketShutdown(s) def __str__(self): return 'TCPInc(%s)<%s>' % (str(self._aResp), str(self._rData))
def test_all_points_incomplete_each_byte(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra for point in range(1, origmsglen - 1): rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() for bpos in range(point): rcv.addMore(msg[bpos:bpos+1]) assert not rcv.isDone() assert not rcv.is_empty() assert rcv.completed() is None
def test_all_points_incomplete_each_byte(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra for point in range(1, origmsglen - 1): rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() for bpos in range(point): rcv.addMore(msg[bpos:bpos + 1]) assert not rcv.isDone() assert not rcv.is_empty() assert rcv.completed() is None
def test_exact(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() rcv.addMore(msg[:origmsglen]) assert rcv.isDone() assert not rcv.is_empty() # py.test bug, cannot just: assert rcv.completed() == message, b'' rmsg, rextra = rcv.completed() print(rmsg, rextra) assert rmsg == message assert b'' == rextra
def test_exact(self): message = 'hello' extra = b'world' msg = toSendBuffer(message) origmsglen = len(msg) msg += extra rcv = ReceiveBuffer() assert not rcv.isDone() assert rcv.is_empty() rcv.addMore(msg[:origmsglen]) assert rcv.isDone() assert not rcv.is_empty() # py.test bug, cannot just: assert rcv.completed() == message, b'' rmsg, rextra = rcv.completed() print(rmsg, rextra) assert rmsg == message assert b'' == rextra
class TCPIncoming(PauseWithBackoff): def __init__(self, acceptResponse): super(TCPIncoming, self).__init__() self._aResp = acceptResponse self._rData = ReceiveBuffer(serializer.loads) self._expires = datetime.now() + MAX_INCOMING_SOCKET_PERIOD self._aResp[0].setblocking(0) # Disable Nagle to transmit headers and acks asap self._aResp[0].setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self._openSock = True self.failCount = 0 @property def socket(self): return self._aResp[0] if self._openSock else None @property def fromAddress(self): return ActorAddress(TCPv4ActorAddress(*(self._aResp[1]))) def delay(self): now = datetime.now() # n.b. include _pauseUntil from PauseWithBackoff return max(timedelta(seconds=0), min(self._expires - now, getattr(self, '_pauseUntil', self._expires) - now)) def addData(self, newData): self._rData.addMore(newData) def remainingSize(self): return self._rData.remainingAmount() def receivedAllData(self): return self._rData.isDone() @property def data(self): return self._rData.completed()[0] def close(self): s = self.socket if s: self._openSock = False _safeSocketShutdown(s) def __del__(self): s = self.socket if s: self._openSock = False _safeSocketShutdown(s) def __str__(self): return 'TCPInc(%s)<%s>'%(str(self._aResp), str(self._rData))