MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / WritePacket

Method WritePacket

IceFireDB-SQLProxy/pkg/mysql/packet/conn.go:179–221  ·  view source on GitHub ↗

WritePacket: data already has 4 bytes header will modify data inplace

(data []byte)

Source from the content-addressed store, hash-verified

177// WritePacket: data already has 4 bytes header
178// will modify data inplace
179func (c *Conn) WritePacket(data []byte) error {
180 length := len(data) - 4
181
182 for length >= MaxPayloadLen {
183 data[0] = 0xff
184 data[1] = 0xff
185 data[2] = 0xff
186
187 data[3] = c.Sequence
188
189 if n, err := c.Write(data[:4+MaxPayloadLen]); err != nil {
190 // return errors.Wrapf(ErrBadConn, "Write(payload portion) failed. err %v", err)
191 c.pkgErr = ErrBadConn
192 return ErrBadConn
193 } else if n != (4 + MaxPayloadLen) {
194 // return errors.Wrapf(ErrBadConn, "Write(payload portion) failed. only %v bytes written, while %v expected", n, 4+MaxPayloadLen)
195 c.pkgErr = ErrBadConn
196 return ErrBadConn
197 } else {
198 c.Sequence++
199 length -= MaxPayloadLen
200 data = data[MaxPayloadLen:]
201 }
202 }
203
204 data[0] = byte(length)
205 data[1] = byte(length >> 8)
206 data[2] = byte(length >> 16)
207 data[3] = c.Sequence
208
209 if n, err := c.Write(data); err != nil {
210 // return errors.Wrapf(ErrBadConn, "Write failed. err %v", err)
211 c.pkgErr = ErrBadConn
212 return ErrBadConn
213 } else if n != len(data) {
214 // return errors.Wrapf(ErrBadConn, "Write failed. only %v bytes written, while %v expected", n, len(data))
215 c.pkgErr = ErrBadConn
216 return ErrBadConn
217 } else {
218 c.Sequence++
219 return nil
220 }
221}
222
223// WriteClearAuthPacket: Client clear text authentication packet
224// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse

Callers 15

writeCommandMethod · 0.95
writeCommandBufMethod · 0.95
writeCommandUint32Method · 0.95
writeCommandStrStrMethod · 0.95
writeAuthHandshakeMethod · 0.95
writeOKMethod · 0.95
writeErrorMethod · 0.95
WriteEOFMethod · 0.95
writeEOFMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected