@@ -49,29 +49,30 @@ class BinLogPacketWrapper(object):
49
49
}
50
50
51
51
def __init__ (self , from_packet , table_map , ctl_connection , use_checksum , allowed_events = None ):
52
- if not from_packet .is_ok_packet ():
53
- raise ValueError (
54
- "Cannot create %s object from invalid packet type" %
55
- self .__class__ .__name__ )
56
-
57
52
# -1 because we ignore the ok byte
58
53
self .read_bytes = 0
59
54
# Used when we want to override a value in the data buffer
60
55
self .__data_buffer = b''
61
56
62
- # Ok Value
63
57
self .packet = from_packet
64
- self .packet .advance (1 )
65
58
self .charset = ctl_connection .charset
66
59
60
+ # OK value
61
+ # timestamp
62
+ # event_type
63
+ # server_id
64
+ # log_pos
65
+ # flags
66
+ unpack = struct .unpack ('<cIcIIIH' , self .packet .read (20 ))
67
+
67
68
# Header
68
- self .timestamp = struct . unpack ( '<I' , self . packet . read ( 4 ))[ 0 ]
69
- self .event_type = byte2int (self . packet . read ( 1 ) )
70
- self .server_id = struct . unpack ( '<I' , self . packet . read ( 4 ))[ 0 ]
71
- self .event_size = struct . unpack ( '<I' , self . packet . read ( 4 ))[ 0 ]
69
+ self .timestamp = unpack [ 1 ]
70
+ self .event_type = byte2int (unpack [ 2 ] )
71
+ self .server_id = unpack [ 3 ]
72
+ self .event_size = unpack [ 4 ]
72
73
# position of the next event
73
- self .log_pos = struct . unpack ( '<I' , self . packet . read ( 4 ))[ 0 ]
74
- self .flags = struct . unpack ( '<H' , self . packet . read ( 2 ))[ 0 ]
74
+ self .log_pos = unpack [ 5 ]
75
+ self .flags = unpack [ 6 ]
75
76
76
77
# MySQL 5.6 and more if binlog-checksum = CRC32
77
78
if use_checksum :
0 commit comments