MCPcopy
hub / github.com/keploy/keploy / EncodeErr

Function EncodeErr

pkg/agent/proxy/integrations/mysql/wire/phase/generic.go:89–123  ·  view source on GitHub ↗
(_ context.Context, packet *mysql.ERRPacket, capabilities uint32)

Source from the content-addressed store, hash-verified

87}
88
89func EncodeErr(_ context.Context, packet *mysql.ERRPacket, capabilities uint32) ([]byte, error) {
90 buf := new(bytes.Buffer)
91
92 // Write the header
93 if err := buf.WriteByte(packet.Header); err != nil {
94 return nil, fmt.Errorf("failed to write header: %w", err)
95 }
96
97 // Write the error code
98 if err := binary.Write(buf, binary.LittleEndian, packet.ErrorCode); err != nil {
99 return nil, fmt.Errorf("failed to write error code: %w", err)
100 }
101
102 // Write the SQL state marker and SQL state if CLIENT_PROTOCOL_41 is set
103 if capabilities&uint32(mysql.CLIENT_PROTOCOL_41) > 0 {
104 if len(packet.SQLStateMarker) != 1 || len(packet.SQLState) != 5 {
105 return nil, fmt.Errorf("invalid SQL state marker or SQL state length")
106 }
107
108 if err := buf.WriteByte(packet.SQLStateMarker[0]); err != nil {
109 return nil, fmt.Errorf("failed to write SQL state marker: %w", err)
110 }
111
112 if _, err := buf.WriteString(packet.SQLState); err != nil {
113 return nil, fmt.Errorf("failed to write SQL state: %w", err)
114 }
115 }
116
117 // Write the error message
118 if _, err := buf.WriteString(packet.ErrorMessage); err != nil {
119 return nil, fmt.Errorf("failed to write error message: %w", err)
120 }
121
122 return buf.Bytes(), nil
123}
124
125// ref:https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_ok_packet.html
126

Callers 1

EncodeToBinaryFunction · 0.92

Calls 2

WriteMethod · 0.65
BytesMethod · 0.45

Tested by

no test coverage detected