Package com.mysql.cj.protocol
Interface Protocol<M extends Message>
- Type Parameters:
M
- Message type
- All Known Implementing Classes:
AbstractProtocol
,ClientImpl.PooledXProtocol
,NativeProtocol
,XProtocol
public interface Protocol<M extends Message>
A protocol provides the facilities to communicate with a MySQL server.
-
Method Summary
Modifier and Type Method Description void
afterHandshake()
void
beforeHandshake()
void
changeDatabase(java.lang.String database)
void
changeUser(java.lang.String user, java.lang.String password, java.lang.String database)
Re-authenticates as the given user and passwordM
checkErrorMessage()
Read one message from the MySQL server, checks for errors in it, and if none, returns the message, ready for readingvoid
close()
void
configureTimeZone()
void
connect(java.lang.String user, java.lang.String password, java.lang.String database)
Create a new session.AuthenticationProvider<M>
getAuthenticationProvider()
ExceptionInterceptor
getExceptionInterceptor()
java.io.InputStream
getLocalInfileInputStream()
Returns the InputStream instance that will be used to send data in response to a "LOAD DATA LOCAL INFILE" statement.MessageBuilder<M>
getMessageBuilder()
PacketReceivedTimeHolder
getPacketReceivedTimeHolder()
PacketSentTimeHolder
getPacketSentTimeHolder()
java.lang.String
getPasswordCharacterEncoding()
PropertySet
getPropertySet()
java.lang.String
getQueryComment()
Returns the comment that will be prepended to all statements sent to the server.java.lang.String
getQueryTimingUnits()
ServerSession
getServerSession()
SocketConnection
getSocketConnection()
void
init(Session session, SocketConnection socketConnection, PropertySet propertySet, TransactionEventHandler transactionManager)
Init method takes the place of constructor.void
initServerSession()
void
negotiateSSLConnection()
<T extends ProtocolEntity>
Tread(java.lang.Class<Resultset> requiredClass, int maxRows, boolean streamResults, M resultPacket, boolean isBinaryEncoded, ColumnDefinition metadata, ProtocolEntityFactory<T,M> protocolEntityFactory)
Read protocol entity.<T extends ProtocolEntity>
Tread(java.lang.Class<T> requiredClass, ProtocolEntityFactory<T,M> protocolEntityFactory)
M
readMessage(M reuse)
Read one message from the MySQL server into the reusable buffer if provided or into the new one.ColumnDefinition
readMetadata()
<T extends QueryResult>
TreadQueryResult(ResultBuilder<T> resultBuilder)
Read messages from server and deliver them to resultBuilder.ServerCapabilities
readServerCapabilities()
Retrieve ServerCapabilities from server.void
reset()
Return Protocol to its initial state right after successful connect.void
send(Message message, int packetLen)
M
sendCommand(Message queryPacket, boolean skipCheck, int timeoutMillis)
Send a command to the MySQL server.void
setLocalInfileInputStream(java.io.InputStream stream)
Sets an InputStream instance that will be used to send data to the MySQL server for a "LOAD DATA LOCAL INFILE" statement rather than a FileInputStream or URLInputStream that represents the path given as an argument to the statement.void
setPacketReceivedTimeHolder(PacketReceivedTimeHolder packetReceivedTimeHolder)
void
setPacketSentTimeHolder(PacketSentTimeHolder packetSentTimeHolder)
void
setPropertySet(PropertySet propertySet)
void
setQueryComment(java.lang.String comment)
Sets the comment that will be prepended to all statements sent to the server.boolean
versionMeetsMinimum(int major, int minor, int subminor)
-
Method Details
-
init
void init(Session session, SocketConnection socketConnection, PropertySet propertySet, TransactionEventHandler transactionManager)Init method takes the place of constructor. A constructor should be used unless the encapsulation of ProtocolFactory is necessary.- Parameters:
session
-Session
socketConnection
-SocketConnection
propertySet
-PropertySet
transactionManager
-TransactionEventHandler
-
getPropertySet
PropertySet getPropertySet() -
setPropertySet
-
getMessageBuilder
MessageBuilder<M> getMessageBuilder() -
readServerCapabilities
ServerCapabilities readServerCapabilities()Retrieve ServerCapabilities from server.- Returns:
ServerCapabilities
-
getServerSession
ServerSession getServerSession() -
getSocketConnection
SocketConnection getSocketConnection() -
getAuthenticationProvider
AuthenticationProvider<M> getAuthenticationProvider() -
getExceptionInterceptor
ExceptionInterceptor getExceptionInterceptor() -
getPacketSentTimeHolder
PacketSentTimeHolder getPacketSentTimeHolder() -
setPacketSentTimeHolder
-
getPacketReceivedTimeHolder
PacketReceivedTimeHolder getPacketReceivedTimeHolder() -
setPacketReceivedTimeHolder
-
connect
void connect(java.lang.String user, java.lang.String password, java.lang.String database)Create a new session. This generally happens once at the beginning of a connection.- Parameters:
user
- DB user namepassword
- DB user passworddatabase
- database name
-
negotiateSSLConnection
void negotiateSSLConnection() -
beforeHandshake
void beforeHandshake() -
afterHandshake
void afterHandshake() -
changeDatabase
void changeDatabase(java.lang.String database) -
changeUser
void changeUser(java.lang.String user, java.lang.String password, java.lang.String database)Re-authenticates as the given user and password- Parameters:
user
- DB user namepassword
- DB user passworddatabase
- database name
-
getPasswordCharacterEncoding
java.lang.String getPasswordCharacterEncoding() -
versionMeetsMinimum
boolean versionMeetsMinimum(int major, int minor, int subminor) -
readMessage
Read one message from the MySQL server into the reusable buffer if provided or into the new one.- Parameters:
reuse
-Message
instance to read into, may be null- Returns:
- the message from the server.
-
checkErrorMessage
M checkErrorMessage()Read one message from the MySQL server, checks for errors in it, and if none, returns the message, ready for reading- Returns:
- a message ready for reading.
-
send
- Parameters:
message
-Message
instancepacketLen
- length of header + payload
-
readMetadata
ColumnDefinition readMetadata() -
sendCommand
Send a command to the MySQL server.- Parameters:
queryPacket
- a packet pre-loaded with data for the protocol (eg. from a client-side prepared statement). The first byte of this packet is the MySQL protocol 'command' from MysqlDefsskipCheck
- do not call checkErrorPacket() if truetimeoutMillis
- timeout- Returns:
- the response packet from the server
- Throws:
CJException
- if an I/O error or SQL error occurs
-
read
<T extends ProtocolEntity> T read(java.lang.Class<T> requiredClass, ProtocolEntityFactory<T,M> protocolEntityFactory) throws java.io.IOException- Throws:
java.io.IOException
-
read
<T extends ProtocolEntity> T read(java.lang.Class<Resultset> requiredClass, int maxRows, boolean streamResults, M resultPacket, boolean isBinaryEncoded, ColumnDefinition metadata, ProtocolEntityFactory<T,M> protocolEntityFactory) throws java.io.IOExceptionRead protocol entity.- Type Parameters:
T
- object extending theProtocolEntity
- Parameters:
requiredClass
- required Resultset classmaxRows
- the maximum number of rows to read (-1 means all rows)streamResults
- should the driver leave the results on the wire, and read them only when needed?resultPacket
- the first packet of information in the result setisBinaryEncoded
- true if the binary protocol is used (for server prepared statements)metadata
- use this metadata instead of the one provided on wireprotocolEntityFactory
-ProtocolEntityFactory
instance- Returns:
ProtocolEntity
instance- Throws:
java.io.IOException
- if an error occurs
-
setLocalInfileInputStream
void setLocalInfileInputStream(java.io.InputStream stream)Sets an InputStream instance that will be used to send data to the MySQL server for a "LOAD DATA LOCAL INFILE" statement rather than a FileInputStream or URLInputStream that represents the path given as an argument to the statement. This stream will be read to completion upon execution of a "LOAD DATA LOCAL INFILE" statement, and will automatically be closed by the driver, so it needs to be reset before each call to execute*() that would cause the MySQL server to request data to fulfill the request for "LOAD DATA LOCAL INFILE". If this value is set to NULL, the driver will revert to using a FileInputStream or URLInputStream as required.- Parameters:
stream
- input stream
-
getLocalInfileInputStream
java.io.InputStream getLocalInfileInputStream()Returns the InputStream instance that will be used to send data in response to a "LOAD DATA LOCAL INFILE" statement. This method returns NULL if no such stream has been set via setLocalInfileInputStream().- Returns:
- input stream
-
getQueryComment
java.lang.String getQueryComment()Returns the comment that will be prepended to all statements sent to the server.- Returns:
- query comment string
-
setQueryComment
void setQueryComment(java.lang.String comment)Sets the comment that will be prepended to all statements sent to the server. Do not use slash-star or star-slash tokens in the comment as these will be added by the driver itself.- Parameters:
comment
- query comment string
-
readQueryResult
Read messages from server and deliver them to resultBuilder.- Type Parameters:
T
- result type- Parameters:
resultBuilder
-ResultBuilder
instance- Returns:
QueryResult
-
close
void close() throws java.io.IOException- Throws:
java.io.IOException
-
configureTimeZone
void configureTimeZone() -
initServerSession
void initServerSession() -
reset
void reset()Return Protocol to its initial state right after successful connect. -
getQueryTimingUnits
java.lang.String getQueryTimingUnits()
-