Class CompressPacketOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- org.mariadb.jdbc.internal.io.output.AbstractPacketOutputStream
-
- org.mariadb.jdbc.internal.io.output.CompressPacketOutputStream
-
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
,PacketOutputStream
public class CompressPacketOutputStream extends AbstractPacketOutputStream
-
-
Field Summary
-
Fields inherited from class org.mariadb.jdbc.internal.io.output.AbstractPacketOutputStream
buf, cmdLength, maxAllowedPacket, maxQuerySizeToLog, permitTrace, pos, seqNo, serverThreadLog, threadId, traceCache
-
Fields inherited from class java.io.FilterOutputStream
out
-
-
Constructor Summary
Constructors Constructor Description CompressPacketOutputStream(OutputStream out, int maxQuerySizeToLog, long threadId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
flushBuffer(boolean commandEnd)
Flush the internal buffer.int
getMaxPacketLength()
int
initialPacketPos()
void
setMaxAllowedPacket(int maxAllowedPacket)
void
startPacket(int compressSeqNo)
void
writeEmptyPacket()
Write an empty packet.-
Methods inherited from class org.mariadb.jdbc.internal.io.output.AbstractPacketOutputStream
bufferIsDataAfterMark, checkMaxAllowedLength, checkRemainingSize, exceedMaxLength, flush, flushBufferStopAtMark, getMaxAllowedPacket, getOutputStream, isMarked, mark, permitTrace, resetMark, setServerThreadId, setTraceCache, write, write, write, write, write, write, write, write, write, writeBytes, writeBytesEscaped, writeEmptyPacket, writeFieldLength, writeInt, writeLong, writeShort
-
Methods inherited from class java.io.FilterOutputStream
close
-
Methods inherited from class java.io.OutputStream
nullOutputStream
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.mariadb.jdbc.internal.io.output.PacketOutputStream
close
-
-
-
-
Constructor Detail
-
CompressPacketOutputStream
public CompressPacketOutputStream(OutputStream out, int maxQuerySizeToLog, long threadId)
-
-
Method Detail
-
getMaxPacketLength
public int getMaxPacketLength()
- Specified by:
getMaxPacketLength
in classAbstractPacketOutputStream
-
setMaxAllowedPacket
public void setMaxAllowedPacket(int maxAllowedPacket)
- Specified by:
setMaxAllowedPacket
in interfacePacketOutputStream
- Specified by:
setMaxAllowedPacket
in classAbstractPacketOutputStream
-
startPacket
public void startPacket(int compressSeqNo)
- Specified by:
startPacket
in interfacePacketOutputStream
- Specified by:
startPacket
in classAbstractPacketOutputStream
-
initialPacketPos
public int initialPacketPos()
-
flushBuffer
protected void flushBuffer(boolean commandEnd) throws IOException
Flush the internal buffer.Compression add a 7 header :
- 3 byte compression length
- 1 byte compress sequence number
- 3 bytes uncompress length
in case packet isn't compressed (last 3 bytes == 0):
- 3 byte uncompress length
- 1 byte compress sequence number
- 3 bytes with 0 value
Content correspond to standard content.
- 3 byte length
- 1 byte sequence number (!= than compress sequence number)
- sub-content
Problem is when standard content is bigger than 16mb : content will not send 4byte standard header + 16mb content, since packet are limited to 16mb then 4 bytes standard header + 16mb - 4 bytes content. the ending 4 bytes are waiting to be send. next packet will then send the waiting data before next packet, putting more waiting data is needed. if ending data is exactly MAX_PACKET_LENGTH length, then an empty packet must be send.
- Specified by:
flushBuffer
in classAbstractPacketOutputStream
- Parameters:
commandEnd
- command end- Throws:
IOException
- id connection error occur.
-
writeEmptyPacket
public void writeEmptyPacket() throws IOException
Write an empty packet.- Specified by:
writeEmptyPacket
in interfacePacketOutputStream
- Specified by:
writeEmptyPacket
in classAbstractPacketOutputStream
- Throws:
IOException
- if socket error occur.
-
-