代码拉取完成,页面将自动刷新
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
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。