org.postgresql.adba.communication.BeFrame Maven / Gradle / Ivy
package org.postgresql.adba.communication;
public class BeFrame {
public enum BackendTag {
AUTHENTICATION('R'),
CANCELLATION_KEY_DATA('K'),
BIND_COMPLETE('2'),
CLOSE_COMPLETE('3'),
COMMAND_COMPLETE('C'),
COPY_DATA('d'),
COPY_DONE('c'),
COPY_IN_RESPONSE('G'),
COPY_OUT_RESPONSE('H'),
COPY_BOTH_RESPONSE('W'),
DATA_ROW('D'),
EMPTY_QUERY_RESPONSE('I'),
ERROR_RESPONSE('E'),
FUNCTION_CALL_RESPONSE('V'),
NEGOTIATE_PROTOCOL_VERSION('v'),
NO_DATA('n'),
NOTICE_RESPONSE('N'),
NOTIFICATION_RESPONSE('A'),
PARAM_DESCRIPTION('t'),
PARAM_STATUS('S'),
PARSE_COMPLETE('1'),
PORTAL_SUSPENDED('s'),
READY_FOR_QUERY('Z'),
ROW_DESCRIPTION('T'),
TLS_HANDSHAKE('/');
private char tag;
BackendTag(char tag) {
this.tag = tag;
}
/**
* Find the BackendTag that corresponds to the supplied byte value.
* @param input byte to search for
* @return the corresponding BackendTag
*/
public static BackendTag lookup(byte input) {
for (BackendTag bt : values()) {
if (input == bt.tag) {
return bt;
}
}
throw new IllegalArgumentException("There is no backend server tag that matches byte " + input);
}
}
private BackendTag tag;
private byte[] payload;
public BeFrame(byte tag, byte[] payload) {
this.tag = BackendTag.lookup(tag);
this.payload = payload;
}
public BackendTag getTag() {
return tag;
}
// TODO make this InputStream from PooledByteBuffer instances (avoids unnecessary copies)
public byte[] getPayload() {
return payload;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy