Exemplo n.º 1
0
    def pack(self):
        """ Pack message to binary stream. """
        payload = io.BytesIO()
        # Advance num bytes equal to header size - the header is written later
        # after the payload of all segments and parts has been written:
        payload.seek(self.header_size, io.SEEK_CUR)

        # Write out payload of segments and parts:
        self.build_payload(payload)

        packet_length = len(payload.getvalue()) - self.header_size
        self.header = MessageHeader(self.session_id,
                                    self.packet_count,
                                    packet_length,
                                    constants.MAX_SEGMENT_SIZE,
                                    num_segments=len(self.segments),
                                    packet_options=0)
        packed_header = self.header_struct.pack(*self.header)

        # Go back to begining of payload for writing message header:
        payload.seek(0)
        payload.write(packed_header)
        payload.seek(0, io.SEEK_END)

        trace(self)

        return payload
Exemplo n.º 2
0
 def unpack_reply(cls, header, payload):
     """Take already unpacked header and binary payload of received request reply and creates message instance
     :param header: a namedtuple header object providing header information
     :param payload: payload (BytesIO instance) of message
     """
     reply = cls(
         header.session_id, header.packet_count,
         segments=tuple(ReplySegment.unpack_from(payload, expected_segments=header.num_segments)),
         header=header
     )
     trace(reply)
     return reply
Exemplo n.º 3
0
 def unpack_reply(cls, header, payload):
     """Take already unpacked header and binary payload of received request reply and creates message instance
     :param header: a namedtuple header object providing header information
     :param payload: payload (BytesIO instance) of message
     """
     reply = cls(header.session_id,
                 header.packet_count,
                 segments=tuple(
                     ReplySegment.unpack_from(
                         payload, expected_segments=header.num_segments)),
                 header=header)
     trace(reply)
     return reply
Exemplo n.º 4
0
    def pack(self):
        """ Pack message to binary stream. """
        payload = io.BytesIO()
        # Advance num bytes equal to header size - the header is written later
        # after the payload of all segments and parts has been written:
        payload.seek(self.header_size, io.SEEK_CUR)

        # Write out payload of segments and parts:
        self.build_payload(payload)

        packet_length = len(payload.getvalue()) - self.header_size
        self.header = MessageHeader(self.session_id, self.packet_count, packet_length, constants.MAX_SEGMENT_SIZE,
                                    num_segments=len(self.segments), packet_options=0)
        packed_header = self.header_struct.pack(*self.header)

        # Go back to begining of payload for writing message header:
        payload.seek(0)
        payload.write(packed_header)
        payload.seek(0, io.SEEK_END)

        trace(self)

        return payload
Exemplo n.º 5
0
def test_tracing_output():
    msg_header = MessageHeader(session_id=5, packet_count=3, payload_length=500, varpartsize=500,
                               num_segments=1, packet_options=0)
    request = RequestMessage(
        session_id=msg_header.session_id,
        packet_count=msg_header.packet_count,
        segments=RequestSegment(
            message_types.EXECUTE,
            Command('select * from dummy')
        ),
        header=msg_header
    )

    pyhdb.tracing = True
    try:
        trace_msg = trace(request)
    finally:
        pyhdb.tracing = False

    assert trace_msg == TRACE_MSG
Exemplo n.º 6
0
def test_tracing_output():
    msg_header = MessageHeader(session_id=5,
                               packet_count=3,
                               payload_length=500,
                               varpartsize=500,
                               num_segments=1,
                               packet_options=0)
    request = RequestMessage(session_id=msg_header.session_id,
                             packet_count=msg_header.packet_count,
                             segments=RequestSegment(
                                 message_types.EXECUTE,
                                 Command('select * from dummy')),
                             header=msg_header)

    pyhdb.tracing = True
    try:
        trace_msg = trace(request)
    finally:
        pyhdb.tracing = False

    assert trace_msg == TRACE_MSG