MCPcopy Create free account
hub / github.com/LagrangeDev/LagrangeGo / sendAndWaitDynamic

Method sendAndWaitDynamic

client/network.go:281–296  ·  view source on GitHub ↗

* // waitPacket // 等待一个或多个数据包解析, 优先级低于 sendAndWait // 返回终止解析函数 func (c *QQClient) waitPacket(cmd string, f func(any, error)) func() { c.waiters.Store(cmd, f) return func() { c.waiters.Delete(cmd) } } // waitPacketTimeoutSyncF // 等待一个数据包解析, 优先级低于 sendAndWait func (c *QQClient) waitPacketTimeou

(seq uint32, pkt []byte)

Source from the content-addressed store, hash-verified

279// sendAndWaitDynamic
280// 发送数据包并返回需要解析的 response
281func (c *QQClient) sendAndWaitDynamic(seq uint32, pkt []byte) ([]byte, error) {
282 ch := make(chan []byte, 1)
283 c.handlers.Store(seq, &handlerInfo{fun: func(i any, _ error) { ch <- i.([]byte) }, dynamic: true})
284 err := c.sendPacket(pkt)
285 if err != nil {
286 c.handlers.Delete(seq)
287 return nil, err
288 }
289 select {
290 case rsp := <-ch:
291 return rsp, nil
292 case <-time.After(time.Second * 15):
293 c.handlers.Delete(seq)
294 return nil, errors.New("Packet timed out")
295 }
296}
297
298// SendSsoPacket
299// 发送签名回调包给服务器并获取返回结果供提交

Callers 1

SendSsoPacketMethod · 0.95

Calls 1

sendPacketMethod · 0.95

Tested by

no test coverage detected