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.generic;
19
20 import com.google.common.base.Preconditions;
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
30
31 @RequiredArgsConstructor
32 @Getter
33 public final class MySQLOKPacket extends MySQLPacket {
34
35
36
37
38 public static final int HEADER = 0x00;
39
40 private final long affectedRows;
41
42 private final long lastInsertId;
43
44 private final int statusFlag;
45
46 private final int warnings;
47
48 private final String info;
49
50 public MySQLOKPacket(final int statusFlag) {
51 this(0L, 0L, statusFlag, 0, "");
52 }
53
54 public MySQLOKPacket(final long affectedRows, final long lastInsertId, final int statusFlag) {
55 this(affectedRows, lastInsertId, statusFlag, 0, "");
56 }
57
58 public MySQLOKPacket(final MySQLPacketPayload payload) {
59 Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of MySQL OK packet must be `0x00`.");
60 affectedRows = payload.readIntLenenc();
61 lastInsertId = payload.readIntLenenc();
62 statusFlag = payload.readInt2();
63 warnings = payload.readInt2();
64 info = payload.readStringEOF();
65 }
66
67 @Override
68 protected void write(final MySQLPacketPayload payload) {
69 payload.writeInt1(HEADER);
70 payload.writeIntLenenc(affectedRows);
71 payload.writeIntLenenc(lastInsertId);
72 payload.writeInt2(statusFlag);
73 payload.writeInt2(warnings);
74 payload.writeStringEOF(info);
75 }
76 }