@@ -11,41 +11,29 @@ import (
1111// for debugging wire protocol.
1212const debugTrace = false
1313
14- type compressedReader struct {
15- buf packetReader
14+ type compressor struct {
15+ mc * mysqlConn
16+ // for reader
1617 bytesBuf []byte
17- mc * mysqlConn
1818 zr io.ReadCloser
19- }
20-
21- type compressedWriter struct {
19+ // for writer
2220 connWriter io.Writer
23- mc * mysqlConn
2421 zw * zlib.Writer
2522}
2623
27- func newCompressedReader (buf packetReader , mc * mysqlConn ) * compressedReader {
28- return & compressedReader {
29- buf : buf ,
30- bytesBuf : make ([]byte , 0 ),
31- mc : mc ,
32- }
33- }
34-
35- func newCompressedWriter (connWriter io.Writer , mc * mysqlConn ) * compressedWriter {
36- // level 1 or 2 is the best trade-off between speed and compression ratio
24+ func newCompressor (mc * mysqlConn , w io.Writer ) * compressor {
3725 zw , err := zlib .NewWriterLevel (new (bytes.Buffer ), 2 )
3826 if err != nil {
3927 panic (err ) // compress/zlib return non-nil error only if level is invalid
4028 }
41- return & compressedWriter {
42- connWriter : connWriter ,
29+ return & compressor {
4330 mc : mc ,
31+ connWriter : w ,
4432 zw : zw ,
4533 }
4634}
4735
48- func (r * compressedReader ) readNext (need int ) ([]byte , error ) {
36+ func (r * compressor ) readNext (need int ) ([]byte , error ) {
4937 for len (r .bytesBuf ) < need {
5038 if err := r .uncompressPacket (); err != nil {
5139 return nil , err
@@ -57,8 +45,8 @@ func (r *compressedReader) readNext(need int) ([]byte, error) {
5745 return data , nil
5846}
5947
60- func (r * compressedReader ) uncompressPacket () error {
61- header , err := r .buf .readNext (7 ) // size of compressed header
48+ func (r * compressor ) uncompressPacket () error {
49+ header , err := r .mc . buf .readNext (7 ) // size of compressed header
6250 if err != nil {
6351 return err
6452 }
@@ -76,7 +64,7 @@ func (r *compressedReader) uncompressPacket() error {
7664 }
7765 r .mc .compressionSequence ++
7866
79- comprData , err := r .buf .readNext (comprLength )
67+ comprData , err := r .mc . buf .readNext (comprLength )
8068 if err != nil {
8169 return err
8270 }
@@ -138,7 +126,7 @@ const maxPayloadLen = maxPacketSize - 4
138126
139127var blankHeader = make ([]byte , 7 )
140128
141- func (w * compressedWriter ) Write (data []byte ) (int , error ) {
129+ func (w * compressor ) Write (data []byte ) (int , error ) {
142130 totalBytes := len (data )
143131 dataLen := len (data )
144132 var buf bytes.Buffer
@@ -183,7 +171,7 @@ func (w *compressedWriter) Write(data []byte) (int, error) {
183171
184172// writeCompressedPacket writes a compressed packet with header.
185173// data should start with 7 size space for header followed by payload.
186- func (w * compressedWriter ) writeCompressedPacket (data []byte , uncompressedLen int ) error {
174+ func (w * compressor ) writeCompressedPacket (data []byte , uncompressedLen int ) error {
187175 comprLength := len (data ) - 7
188176
189177 // compression header
0 commit comments