MCPcopy
hub / github.com/keploy/keploy / EncodeToBinary

Function EncodeToBinary

pkg/agent/proxy/integrations/mysql/wire/encode.go:17–176  ·  view source on GitHub ↗
(ctx context.Context, logger *zap.Logger, packet *mysql.PacketBundle, clientConn net.Conn, decodeCtx *DecodeContext)

Source from the content-addressed store, hash-verified

15)
16
17func EncodeToBinary(ctx context.Context, logger *zap.Logger, packet *mysql.PacketBundle, clientConn net.Conn, decodeCtx *DecodeContext) ([]byte, error) {
18
19 if packet == nil {
20 return nil, fmt.Errorf("packet is nil")
21 }
22
23 var data []byte
24 var err error
25
26 //Get the server greeting from the decode context
27 serverGreeting, ok := decodeCtx.ServerGreetings.Load(clientConn)
28 if !ok {
29 return nil, fmt.Errorf("server greeting not found for connection %s", clientConn.RemoteAddr().String())
30 }
31
32 switch packet.Message.(type) {
33 // generic response packets
34 case *mysql.EOFPacket:
35 pkt, ok := packet.Message.(*mysql.EOFPacket)
36 if !ok {
37 return nil, fmt.Errorf("expected EOFPacket, got %T", packet.Message)
38 }
39
40 data, err = phase.EncodeEOF(ctx, pkt, serverGreeting.CapabilityFlags)
41 if err != nil {
42 return nil, fmt.Errorf("error encoding EOF packet: %v", err)
43 }
44
45 decodeCtx.LastOp.Store(clientConn, mysql.EOF)
46
47 case *mysql.ERRPacket:
48 pkt, ok := packet.Message.(*mysql.ERRPacket)
49 if !ok {
50 return nil, fmt.Errorf("expected ERRPacket, got %T", packet.Message)
51 }
52
53 data, err = phase.EncodeErr(ctx, pkt, serverGreeting.CapabilityFlags)
54 if err != nil {
55 return nil, fmt.Errorf("error encoding ERR packet: %v", err)
56 }
57
58 decodeCtx.LastOp.Store(clientConn, mysql.ERR)
59
60 case *mysql.OKPacket:
61 pkt, ok := packet.Message.(*mysql.OKPacket)
62 if !ok {
63 return nil, fmt.Errorf("expected OKPacket, got %T", packet.Message)
64 }
65
66 data, err = phase.EncodeOk(ctx, pkt, serverGreeting.CapabilityFlags)
67 if err != nil {
68 return nil, fmt.Errorf("error encoding OK packet: %v", err)
69 }
70
71 decodeCtx.LastOp.Store(clientConn, mysql.OK)
72
73 // connection phase packets
74 case *mysql.AuthMoreDataPacket:

Callers 7

simulateCommandPhaseFunction · 0.92
simulateInitialHandshakeFunction · 0.92
simulateNativePasswordFunction · 0.92
simulateFastAuthSuccessFunction · 0.92
simulateFullAuthFunction · 0.92
simulatePlainPasswordFunction · 0.92

Calls 15

EncodeEOFFunction · 0.92
EncodeErrFunction · 0.92
EncodeOkFunction · 0.92
EncodeAuthMoreDataFunction · 0.92
EncodeAuthSwitchRequestFunction · 0.92
EncodeHandshakeV10Function · 0.92
EncodePrepareOkFunction · 0.92
EncodeTextResultSetFunction · 0.92
EncodeBinaryResultSetFunction · 0.92
isCompositeMessageFunction · 0.85
LoadMethod · 0.65
DebugMethod · 0.65

Tested by

no test coverage detected