1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.db.protocol.mysql.packet.binlog;
19
20 import lombok.AccessLevel;
21 import lombok.Getter;
22 import lombok.RequiredArgsConstructor;
23 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
24 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
25
26
27
28
29 @RequiredArgsConstructor(access = AccessLevel.PROTECTED)
30 @Getter
31 public abstract class AbstractMySQLBinlogEventPacket extends MySQLPacket implements MySQLBinlogEventPacket {
32
33 private final MySQLBinlogEventHeader binlogEventHeader;
34
35 @Override
36 protected final void write(final MySQLPacketPayload payload) {
37 binlogEventHeader.write(payload);
38 writeEvent(payload);
39 }
40
41
42
43
44
45
46 protected abstract void writeEvent(MySQLPacketPayload payload);
47
48 protected int getRemainBytesLength(final MySQLPacketPayload payload) {
49
50 int alreadyReadIndex = binlogEventHeader.getEventSize() + 1 - binlogEventHeader.getChecksumLength();
51 if (payload.getByteBuf().readerIndex() > alreadyReadIndex) {
52 return -1;
53 }
54 return alreadyReadIndex - payload.getByteBuf().readerIndex();
55 }
56 }