7 Star 26 Fork 2

Gitee 极速下载 / goworld

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/xiaonanln/goworld
克隆/下载
rpc_desc.go 950 Bytes
一键复制 编辑 原始数据 按行查看 历史
package entity
import (
"reflect"
"strings"
)
const (
rfServer = 1 << iota
rfOwnClient = 1 << iota
rfOtherClient = 1 << iota
)
type rpcDesc struct {
Func reflect.Value
Flags uint
MethodType reflect.Type
NumArgs int
}
type rpcDescMap map[string]*rpcDesc
func (rdm rpcDescMap) visit(method reflect.Method) {
methodName := method.Name
var flag uint
var rpcName string
if strings.HasSuffix(methodName, "_Client") {
flag |= rfServer + rfOwnClient
rpcName = methodName[:len(methodName)-7]
} else if strings.HasSuffix(methodName, "_AllClients") {
flag |= rfServer + rfOwnClient + rfOtherClient
rpcName = methodName[:len(methodName)-10]
} else {
// server method
flag |= rfServer
rpcName = methodName
}
methodType := method.Type
rdm[rpcName] = &rpcDesc{
Func: method.Func,
Flags: flag,
MethodType: methodType,
NumArgs: methodType.NumIn() - 1, // do not count the receiver
}
}
1
https://gitee.com/mirrors/goworld.git
git@gitee.com:mirrors/goworld.git
mirrors
goworld
goworld
v0.1.6

搜索帮助