五邑隐侠,本名关健昌,12年游戏生涯。 本教程以Go语言为例。
type RpcRequest struct { Mark []byte FuncNo uint16 SerialNo uint16 Params []byte } type RpcResponse struct { Mark []byte FuncNo uint16 SerialNo uint16 ReturnVal []byte }
type RpcHandler func(params []byte) ([]byte, error) type RpcServ struct { p2p *P2pNet mark []byte mapFuncNo2Handler map[uint16]RpcHandler } func (s *RpcServ) HandleFunc(funcNo uint16, handler func(params []byte) ([]byte, error)) { if handler == nil { return }
s.mapFuncNo2Handler[funcNo] = handler }
handler, ok := s.mapFuncNo2Handler[rpc.FuncNo] if !ok { return fmt.Errorf("no handler for funcNo %d", rpc.FuncNo) }
returnVal, err := handler(rpc.Params)
func Wait(e chan byte) { <-e } func Signal(e chan byte) { e <- 1 }
func (c *RpcClient) invoke(params []byte) ([]byte, error)
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv3901