1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.db.protocol.postgresql.packet.command;
19
20 import lombok.Getter;
21 import lombok.RequiredArgsConstructor;
22 import org.apache.shardingsphere.db.protocol.packet.command.CommandPacketType;
23 import org.apache.shardingsphere.db.protocol.postgresql.exception.PostgreSQLProtocolException;
24 import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierTag;
25
26 import java.util.EnumSet;
27 import java.util.Set;
28
29
30
31
32
33
34 @RequiredArgsConstructor
35 @Getter
36 public enum PostgreSQLCommandPacketType implements CommandPacketType, PostgreSQLIdentifierTag {
37
38 PASSWORD('p'),
39
40 SIMPLE_QUERY('Q'),
41
42 PARSE_COMMAND('P'),
43
44 BIND_COMMAND('B'),
45
46 DESCRIBE_COMMAND('D'),
47
48 EXECUTE_COMMAND('E'),
49
50 SYNC_COMMAND('S'),
51
52 CLOSE_COMMAND('C'),
53
54 FLUSH_COMMAND('H'),
55
56 TERMINATE('X');
57
58 private static final Set<PostgreSQLCommandPacketType> EXTENDED_PROTOCOL_PACKET_TYPES = EnumSet.of(PostgreSQLCommandPacketType.PARSE_COMMAND,
59 PostgreSQLCommandPacketType.BIND_COMMAND, PostgreSQLCommandPacketType.DESCRIBE_COMMAND, PostgreSQLCommandPacketType.EXECUTE_COMMAND,
60 PostgreSQLCommandPacketType.SYNC_COMMAND, PostgreSQLCommandPacketType.CLOSE_COMMAND, PostgreSQLCommandPacketType.FLUSH_COMMAND);
61
62 private final char value;
63
64
65
66
67
68
69
70
71 public static PostgreSQLCommandPacketType valueOf(final int value) {
72 for (PostgreSQLCommandPacketType each : values()) {
73 if (value == each.value) {
74 return each;
75 }
76 }
77 throw new PostgreSQLProtocolException("Can not find `%s` in PostgreSQL command packet type.", value);
78 }
79
80
81
82
83
84
85
86 public static boolean isExtendedProtocolPacketType(final CommandPacketType commandPacketType) {
87 return EXTENDED_PROTOCOL_PACKET_TYPES.contains(commandPacketType);
88 }
89 }