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

Method dispatch

IceFireDB-SQLProxy/pkg/mysql/server/command.go:91–171  ·  view source on GitHub ↗

* func (c *Conn) HandleCommand() error { if c.Conn == nil { return fmt.Errorf("connection closed") } data, err := c.ReadPacket() if err != nil { c.Close() c.Conn = nil return err } v := c.dispatch(data) err = c.writeValue(v) if c.Conn != nil { c.ResetSequence()

(data []byte)

Source from the content-addressed store, hash-verified

89 }
90*/
91func (c *Conn) dispatch(data []byte) any {
92 cmd := data[0]
93 data = data[1:]
94 switch cmd {
95 case COM_QUIT:
96 //c.h.CloseConn(c)
97 c.Close()
98 c.Conn = nil
99 return noResponse{}
100 case COM_QUERY:
101 if r, err := c.h.HandleQuery(c, hack.String(data)); err != nil {
102 return err
103 } else {
104 return r
105 }
106 case COM_PING:
107 return nil
108 case COM_INIT_DB:
109 db := hack.String(data)
110 if err := c.h.UseDB(c, db); err != nil {
111 return err
112 }
113 c.db = db
114 return nil
115 case COM_FIELD_LIST:
116 index := bytes.IndexByte(data, 0x00)
117 table := hack.String(data[0:index])
118 wildcard := hack.String(data[index+1:])
119
120 if fs, err := c.h.HandleFieldList(c, table, wildcard); err != nil {
121 return err
122 } else {
123 return fs
124 }
125 case COM_STMT_PREPARE:
126 c.stmtID++
127 st := new(Stmt)
128 st.ID = c.stmtID
129 st.Query = hack.String(data)
130 var err error
131 if st.Params, st.Columns, st.Context, err = c.h.HandleStmtPrepare(c, st.Query); err != nil {
132 return err
133 } else {
134 st.ResetParams()
135 c.stmts[c.stmtID] = st
136 return st
137 }
138 case COM_STMT_EXECUTE:
139 if r, err := c.handleStmtExecute(data); err != nil {
140 return err
141 } else {
142 return r
143 }
144 case COM_STMT_CLOSE:
145 if err := c.handleStmtClose(data); err != nil {
146 return err
147 }
148 return noResponse{}

Callers 1

HandleCommandMethod · 0.95

Calls 12

CloseMethod · 0.95
handleStmtExecuteMethod · 0.95
handleStmtCloseMethod · 0.95
handleStmtResetMethod · 0.95
HandleQueryMethod · 0.65
StringMethod · 0.65
UseDBMethod · 0.65
HandleFieldListMethod · 0.65
HandleStmtPrepareMethod · 0.65
HandleOtherCommandMethod · 0.65
ResetParamsMethod · 0.45

Tested by

no test coverage detected