def recv(self): """Receive a packet at the Enqueue layer, performing reassemble of fragmented packets if necessary. :return: received :class:`SAPEnqueue` packet :rtype: :class:`SAPEnqueue` :raise socket.error: if the connection was close """ # Receive the NI packet packet = SAPRoutedStreamSocket.recv(self) if SAPEnqueue in packet and packet[SAPEnqueue].more_frags: log_sapenqueue.debug("Received Enqueue fragmented packet") head = str(packet[SAPEnqueue])[:20] data = str(packet[SAPEnqueue])[20:] total_length = packet[SAPEnqueue].len - 20 recvd_length = len(packet[SAPEnqueue]) - 20 log_sapenqueue.debug("Received %d up to %d bytes", recvd_length, total_length) while recvd_length < total_length and packet[ SAPEnqueue].more_frags == 1: response = SAPRoutedStreamSocket.recv(self)[SAPEnqueue] data += str(response)[20:] recvd_length += len(response) - 20 log_sapenqueue.debug("Received %d up to %d bytes", recvd_length, total_length) packet = SAPEnqueue(head + data) return packet
def recv(self): """Receive a packet at the Enqueue layer, performing reassemble of fragmented packets if necessary. :return: received :class:`SAPEnqueue` packet :rtype: :class:`SAPEnqueue` :raise socket.error: if the connection was close """ # Receive the NI packet packet = SAPRoutedStreamSocket.recv(self) if SAPEnqueue in packet and packet[SAPEnqueue].more_frags: log_sapenqueue.debug("Received Enqueue fragmented packet") head = str(packet[SAPEnqueue])[:20] data = str(packet[SAPEnqueue])[20:] total_length = packet[SAPEnqueue].len - 20 recvd_length = len(packet[SAPEnqueue]) - 20 log_sapenqueue.debug("Received %d up to %d bytes", recvd_length, total_length) while recvd_length < total_length and packet[SAPEnqueue].more_frags == 1: response = SAPRoutedStreamSocket.recv(self)[SAPEnqueue] data += str(response)[20:] recvd_length += len(response) - 20 log_sapenqueue.debug("Received %d up to %d bytes", recvd_length, total_length) packet = SAPEnqueue(head + data) return packet