public abstract class AbstractPacketOutputStream extends java.io.FilterOutputStream implements PacketOutputStream
Modifier and Type | Field and Description |
---|---|
private static byte |
BACKSLASH |
protected byte[] |
buf |
private boolean |
bufferContainDataAfterMark |
protected long |
cmdLength |
private static byte |
DBL_QUOTE |
private static int |
LARGE_BUFFER_SIZE |
private int |
mark |
protected int |
maxAllowedPacket |
protected int |
maxQuerySizeToLog |
private static int |
MEDIUM_BUFFER_SIZE |
protected boolean |
permitTrace |
protected int |
pos |
private static byte |
QUOTE |
protected int |
seqNo |
protected java.lang.String |
serverThreadLog |
private static int |
SMALL_BUFFER_SIZE |
protected LruTraceCache |
traceCache |
private static byte |
ZERO_BYTE |
Constructor and Description |
---|
AbstractPacketOutputStream(java.io.OutputStream out,
int maxQuerySizeToLog)
Common feature to write data into socket, creating MariaDB Packet.
|
Modifier and Type | Method and Description |
---|---|
boolean |
bufferIsDataAfterMark() |
void |
checkMaxAllowedLength(int length)
Count query size.
|
boolean |
checkRemainingSize(int len) |
boolean |
exceedMaxLength() |
void |
flush()
Send packet to socket.
|
protected abstract void |
flushBuffer(boolean commandEnd) |
void |
flushBufferStopAtMark()
Flush to last mark.
|
int |
getMaxAllowedPacket() |
abstract int |
getMaxPacketLength() |
java.io.OutputStream |
getOutputStream() |
private void |
growBuffer(int len)
Buffer growing use 4 size only to avoid creating/copying that are expensive operations.
|
boolean |
isMarked() |
void |
mark() |
void |
permitTrace(boolean permitTrace) |
byte[] |
resetMark()
Reset mark flag and send bytes after mark flag.
|
abstract void |
setMaxAllowedPacket(int maxAllowedPacket) |
void |
setServerThreadId(long serverThreadId,
java.lang.Boolean isMaster)
Set server thread id.
|
void |
setTraceCache(LruTraceCache traceCache) |
abstract void |
startPacket(int seqNo) |
void |
write(byte[] arr) |
void |
write(byte[] arr,
int off,
int len)
Write byte array to buffer.
|
void |
write(java.io.InputStream is,
boolean escape,
boolean noBackslashEscapes)
Write stream into socket.
|
void |
write(java.io.InputStream is,
long length,
boolean escape,
boolean noBackslashEscapes)
Write stream into socket.
|
void |
write(int value)
Write byte into buffer, flush buffer to socket if needed.
|
void |
write(java.io.Reader reader,
boolean escape,
boolean noBackslashEscapes)
Write reader into socket.
|
void |
write(java.io.Reader reader,
long length,
boolean escape,
boolean noBackslashEscapes)
Write reader into socket.
|
void |
write(java.lang.String str) |
void |
write(java.lang.String str,
boolean escape,
boolean noBackslashEscapes)
Write string to socket.
|
void |
writeBytes(byte value,
int len)
Write byte value, len times into buffer.
|
void |
writeBytesEscaped(byte[] bytes,
int len,
boolean noBackslashEscapes)
Write escape bytes to socket.
|
abstract void |
writeEmptyPacket() |
void |
writeEmptyPacket(int seqNo)
Send empty packet.
|
void |
writeFieldLength(long length)
Write field length into buffer, flush socket if needed.
|
void |
writeInt(int value)
Write int value into buffer.
|
void |
writeLong(long value)
Write long value into buffer.
|
void |
writeShort(short value)
Write short value into buffer.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
close, initialPacketPos
private static final byte QUOTE
private static final byte DBL_QUOTE
private static final byte ZERO_BYTE
private static final byte BACKSLASH
private static final int SMALL_BUFFER_SIZE
private static final int MEDIUM_BUFFER_SIZE
private static final int LARGE_BUFFER_SIZE
protected final int maxQuerySizeToLog
protected byte[] buf
protected int pos
protected int maxAllowedPacket
protected long cmdLength
protected boolean permitTrace
protected int seqNo
protected java.lang.String serverThreadLog
protected LruTraceCache traceCache
private int mark
private boolean bufferContainDataAfterMark
public AbstractPacketOutputStream(java.io.OutputStream out, int maxQuerySizeToLog)
out
- socket outputStreammaxQuerySizeToLog
- maximum query size to logpublic abstract int getMaxPacketLength()
public abstract void startPacket(int seqNo)
startPacket
in interface PacketOutputStream
protected abstract void flushBuffer(boolean commandEnd) throws java.io.IOException
java.io.IOException
private void growBuffer(int len) throws java.io.IOException
len
- length to addjava.io.IOException
public void writeEmptyPacket(int seqNo) throws java.io.IOException
writeEmptyPacket
in interface PacketOutputStream
seqNo
- packet sequencejava.io.IOException
- if socket error occur.public abstract void writeEmptyPacket() throws java.io.IOException
writeEmptyPacket
in interface PacketOutputStream
java.io.IOException
public void flush() throws java.io.IOException
flush
in interface java.io.Flushable
flush
in interface PacketOutputStream
flush
in class java.io.FilterOutputStream
java.io.IOException
- if socket error occur.public boolean checkRemainingSize(int len)
checkRemainingSize
in interface PacketOutputStream
public void checkMaxAllowedLength(int length) throws MaxAllowedPacketException
checkMaxAllowedLength
in interface PacketOutputStream
length
- additional length to query sizeMaxAllowedPacketException
- if query has not to be send.public boolean exceedMaxLength()
exceedMaxLength
in interface PacketOutputStream
public java.io.OutputStream getOutputStream()
getOutputStream
in interface PacketOutputStream
public void writeShort(short value) throws java.io.IOException
writeShort
in interface PacketOutputStream
value
- short valuejava.io.IOException
- if socket error occurpublic void writeInt(int value) throws java.io.IOException
writeInt
in interface PacketOutputStream
value
- int valuejava.io.IOException
- if socket error occurpublic void writeLong(long value) throws java.io.IOException
writeLong
in interface PacketOutputStream
value
- long valuejava.io.IOException
- if socket error occurpublic void writeBytes(byte value, int len) throws java.io.IOException
writeBytes
in interface PacketOutputStream
value
- byte valuelen
- number of time to write value.java.io.IOException
- if socket error occur.public void writeFieldLength(long length) throws java.io.IOException
writeFieldLength
in interface PacketOutputStream
length
- field lengthjava.io.IOException
- if socket error occur.public void write(int value) throws java.io.IOException
write
in interface PacketOutputStream
write
in class java.io.FilterOutputStream
value
- byte to sendjava.io.IOException
- if socket error occur.public void write(byte[] arr) throws java.io.IOException
write
in interface PacketOutputStream
write
in class java.io.FilterOutputStream
java.io.IOException
public void write(byte[] arr, int off, int len) throws java.io.IOException
write
in interface PacketOutputStream
write
in class java.io.FilterOutputStream
arr
- byte arrayoff
- offsetlen
- byte length to writejava.io.IOException
- if socket error occurpublic void write(java.lang.String str) throws java.io.IOException
write
in interface PacketOutputStream
java.io.IOException
public void write(java.lang.String str, boolean escape, boolean noBackslashEscapes) throws java.io.IOException
write
in interface PacketOutputStream
str
- stringescape
- must be escapenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic void write(java.io.InputStream is, boolean escape, boolean noBackslashEscapes) throws java.io.IOException
write
in interface PacketOutputStream
is
- inputStreamescape
- must be escapenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic void write(java.io.InputStream is, long length, boolean escape, boolean noBackslashEscapes) throws java.io.IOException
write
in interface PacketOutputStream
is
- inputStreamlength
- write lengthescape
- must be escapenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic void write(java.io.Reader reader, boolean escape, boolean noBackslashEscapes) throws java.io.IOException
write
in interface PacketOutputStream
reader
- readerescape
- must be escapenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic void write(java.io.Reader reader, long length, boolean escape, boolean noBackslashEscapes) throws java.io.IOException
write
in interface PacketOutputStream
reader
- readerlength
- write lengthescape
- must be escapenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic void writeBytesEscaped(byte[] bytes, int len, boolean noBackslashEscapes) throws java.io.IOException
writeBytesEscaped
in interface PacketOutputStream
bytes
- byteslen
- len to writenoBackslashEscapes
- escape methodjava.io.IOException
- if socket error occurpublic int getMaxAllowedPacket()
getMaxAllowedPacket
in interface PacketOutputStream
public abstract void setMaxAllowedPacket(int maxAllowedPacket)
setMaxAllowedPacket
in interface PacketOutputStream
public void permitTrace(boolean permitTrace)
permitTrace
in interface PacketOutputStream
public void setServerThreadId(long serverThreadId, java.lang.Boolean isMaster)
setServerThreadId
in interface PacketOutputStream
serverThreadId
- current server thread id.isMaster
- is server masterpublic void setTraceCache(LruTraceCache traceCache)
setTraceCache
in interface PacketOutputStream
public void mark()
mark
in interface PacketOutputStream
public boolean isMarked()
isMarked
in interface PacketOutputStream
public void flushBufferStopAtMark() throws java.io.IOException
flushBufferStopAtMark
in interface PacketOutputStream
java.io.IOException
- if flush fail.public boolean bufferIsDataAfterMark()
bufferIsDataAfterMark
in interface PacketOutputStream
public byte[] resetMark()
resetMark
in interface PacketOutputStream