Esempio n. 1
0
 def __init__(self, capability_flags, **kwargs):
     super(EOFPacket, self).__init__(capability_flags, **kwargs)
     self.fields = [('eof_header', FixedLengthInteger(1,
                                                      0xfe))  # EOF header
                    ]
     if capability_flags & capabilities.PROTOCOL_41:
         self.fields += [
             ('warnings', FixedLengthInteger(2, kwargs.pop('warnings', 0))),
             ('status_flags',
              FixedLengthInteger(2, kwargs.pop('status_flags', 0)))
         ]
Esempio n. 2
0
 def __init__(self, capability_flags, error_code, error_msg, **kwargs):
     super(ERRPacket, self).__init__(capability_flags, **kwargs)
     self.error_code = error_code
     self.error_msg = error_msg
     self.fields = [
         ('err_header', FixedLengthInteger(1, 0xff)),  # ERR header
         ('error_code', FixedLengthInteger(2, error_code))
     ]
     if capability_flags & capabilities.PROTOCOL_41:
         self.fields += [
             ('sql_state_flag', FixedLengthString(1, '#')),
             ('sql_state',
              FixedLengthString(5, kwargs.pop('sql_state', 'HY000')))
         ]
     self.fields.append(('error_msg', RestOfPacketString(self.error_msg)))
Esempio n. 3
0
 def _write_packet_header(self, length, seq, fde):
     """
     Write out packet header with given length
     and sequence id to file-like fde
     """
     length_field = FixedLengthInteger(3, length)
     seq_field = FixedLengthInteger(1, seq)
     length_field.write_out(fde, label=None)
     seq_field.write_out(fde, label=None)
Esempio n. 4
0
 def _write_packet_header(self, length, seq, fde):
     """
     Write out packet header with given length
     and sequence id to file-like fde
     """
     length_field = FixedLengthInteger(3, length)
     seq_field = FixedLengthInteger(1, seq)
     length_field.write_out(fde, label=None)
     seq_field.write_out(fde, label=None)
Esempio n. 5
0
 def __init__(self, capability_flags, affected_rows, last_insert_id,
              **kwargs):
     super(OKPacket, self).__init__(capability_flags, **kwargs)
     self.affected_rows = affected_rows
     self.last_insert_id = last_insert_id
     use_41 = capability_flags & capabilities.PROTOCOL_41
     transactions = capability_flags & capabilities.TRANSACTIONS
     if use_41 or transactions:
         self.status_flags = kwargs.pop('status_flags', 0)
         self.warnings = kwargs.pop('warnings', 0)
     self.fields = [
         ('ok_header', FixedLengthInteger(1, 0)),  # OK header
         ('affected_rows', LengthEncodedInteger(affected_rows)),
         ('last_insert_id', LengthEncodedInteger(last_insert_id))
     ]
     if use_41:
         self.fields += [('status_flags',
                          FixedLengthInteger(2, self.status_flags)),
                         ('warnings', FixedLengthInteger(2, self.warnings))]
     elif transactions:
         self.fields.append(
             ('status_flags', FixedLengthInteger(2, self.status_flags)))
     ok_message = kwargs.pop('info', 'k thanks')
     self.fields.append(('ok_message', RestOfPacketString(ok_message)))
Esempio n. 6
0
    def runTest(self):
        """
        Test fixed-length integer read-in
        """
        from StringIO import StringIO
        from mysqlproxy.types import FixedLengthInteger

        # wire read tests
        proto_buf = StringIO(b'\x01\x00\x00\x25')
        fli = FixedLengthInteger(3)
        fli.read_in(proto_buf)
        self.assertEqual(fli.val, 1)

        # wire write tests
        proto_buf = StringIO()
        fli = FixedLengthInteger(3, 1)
        fli.write_out(proto_buf)
        self.assertEqual(proto_buf.getvalue(), b'\x01\x00\x00')
Esempio n. 7
0
 def read_in(self, fde):
     """
     Read in full payload
     """
     total_read = 0
     packet_length = FixedLengthInteger(3, 0xffffff)
     seq_id = FixedLengthInteger(1)
     self.payload = StringIO()
     while packet_length.val == 0xffffff:
         packet_length.read_in(fde, label=None)
         seq_id.read_in(fde, label=None)
         cur_payload = FixedLengthString(packet_length.val)
         cur_payload.read_in(fde, label=None)
         self.payload.write(cur_payload.val)
         self.packet_meta.append(PacketMeta(packet_length.val, seq_id.val))
         total_read += packet_length.val
     self.seq_id = seq_id.val
     self.payload.seek(0)
     return total_read
Esempio n. 8
0
    def runTest(self):
        """
        Test fixed-length integer read-in
        """
        from StringIO import StringIO
        from mysqlproxy.types import FixedLengthInteger

        # wire read tests
        proto_buf = StringIO(b'\x01\x00\x00\x25')
        fli = FixedLengthInteger(3)
        fli.read_in(proto_buf)
        self.assertEqual(fli.val, 1)

        # wire write tests
        proto_buf = StringIO()
        fli = FixedLengthInteger(3, 1)
        fli.write_out(proto_buf)
        self.assertEqual(proto_buf.getvalue(), b'\x01\x00\x00')
Esempio n. 9
0
 def read_in(self, fde):
     """
     Read in full payload
     """
     total_read = 0
     packet_length = FixedLengthInteger(3, 0xffffff)
     seq_id = FixedLengthInteger(1)
     self.payload = StringIO()
     while packet_length.val == 0xffffff:
         packet_length.read_in(fde, label=None)
         seq_id.read_in(fde, label=None)
         cur_payload = FixedLengthString(packet_length.val)
         cur_payload.read_in(fde, label=None)
         self.payload.write(cur_payload.val)
         self.packet_meta.append(PacketMeta(packet_length.val, seq_id.val))
         total_read += packet_length.val
     self.seq_id = seq_id.val
     self.payload.seek(0)
     return total_read