Skip to content

Commit 477c9f8

Browse files
Brigitte LamarcheBrigitte Lamarche
Brigitte Lamarche
authored and
Brigitte Lamarche
committed
writerly changes
1 parent d0ea1a4 commit 477c9f8

File tree

1 file changed

+31
-33
lines changed

1 file changed

+31
-33
lines changed

compress.go

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -144,34 +144,34 @@ func (cw *compressedWriter) Write(data []byte) (int, error) {
144144
if len(data) == 0 {
145145
return 0, nil
146146
}
147+
147148
totalBytes := len(data)
148149

149150
length := len(data) - 4
150151

151152
maxPayloadLength := maxPacketSize - 4
152153

153154
for length >= maxPayloadLength {
154-
// cut off a slice of size max payload length
155-
dataSmall := data[:maxPayloadLength]
156-
lenSmall := len(dataSmall)
157-
158-
var b bytes.Buffer
159-
writer := zlib.NewWriter(&b)
160-
_, err := writer.Write(dataSmall)
161-
writer.Close()
155+
payload := data[:maxPayloadLength]
156+
payloadLen := len(payload)
157+
158+
bytesBuf := &bytes.Buffer{}
159+
bytesBuf.Write(blankHeader)
160+
cw.zw.Reset(bytesBuf)
161+
_, err := cw.zw.Write(payload)
162162
if err != nil {
163163
return 0, err
164164
}
165+
cw.zw.Close()
165166

166167
// if compression expands the payload, do not compress
167-
useData := b.Bytes()
168-
169-
if len(useData) > len(dataSmall) {
170-
useData = dataSmall
171-
lenSmall = 0
168+
compressedPayload := bytesBuf.Bytes()
169+
if len(compressedPayload) > maxPayloadLength {
170+
compressedPayload = append(blankHeader, payload...)
171+
payloadLen = 0
172172
}
173173

174-
err = cw.writeComprPacketToNetwork(useData, lenSmall)
174+
err = cw.writeToNetwork(compressedPayload, payloadLen)
175175
if err != nil {
176176
return 0, err
177177
}
@@ -180,46 +180,44 @@ func (cw *compressedWriter) Write(data []byte) (int, error) {
180180
data = data[maxPayloadLength:]
181181
}
182182

183-
lenSmall := len(data)
183+
payloadLen := len(data)
184184

185185
// do not attempt compression if packet is too small
186-
if lenSmall < minCompressLength {
187-
err := cw.writeComprPacketToNetwork(data, 0)
186+
if payloadLen < minCompressLength {
187+
err := cw.writeToNetwork(append(blankHeader, data...), 0)
188188
if err != nil {
189189
return 0, err
190190
}
191-
192191
return totalBytes, nil
193192
}
194193

195-
var b bytes.Buffer
196-
writer := zlib.NewWriter(&b)
197-
198-
_, err := writer.Write(data)
199-
writer.Close()
200-
194+
bytesBuf := &bytes.Buffer{}
195+
bytesBuf.Write(blankHeader)
196+
cw.zw.Reset(bytesBuf)
197+
_, err := cw.zw.Write(data)
201198
if err != nil {
202199
return 0, err
203200
}
201+
cw.zw.Close()
204202

205-
// if compression expands the payload, do not compress
206-
useData := b.Bytes()
203+
compressedPayload := bytesBuf.Bytes()
207204

208-
if len(useData) > len(data) {
209-
useData = data
210-
lenSmall = 0
205+
if len(compressedPayload) > len(data) {
206+
compressedPayload = append(blankHeader, data...)
207+
payloadLen = 0
211208
}
212209

213-
err = cw.writeComprPacketToNetwork(useData, lenSmall)
214-
210+
// add header and send over the wire
211+
err = cw.writeToNetwork(compressedPayload, payloadLen)
215212
if err != nil {
216213
return 0, err
217214
}
215+
218216
return totalBytes, nil
217+
219218
}
220219

221-
func (cw *compressedWriter) writeComprPacketToNetwork(data []byte, uncomprLength int) error {
222-
data = append(blankHeader, data...)
220+
func (cw *compressedWriter) writeToNetwork(data []byte, uncomprLength int) error {
223221

224222
comprLength := len(data) - 7
225223

0 commit comments

Comments
 (0)