Closed ideamean closed 5 years ago
将 context 转换成 rpc.ServiceContext 对象,然后通过 Method 方法可以得到 Method 对象。
棒
如果是这样:server.AddInstanceMethods(&serviceA), 调用serviceA.func1() 在InvokeHandler中,name目前是func1, 如何再拿到serviceA这个字符串?
Method 方法得到的 Method 对象有个 Function 属性。该属性是 reflect.Value 类型的,所以,该函数上的所有东西你都可以反射出来。
server.AddInstanceMethods(&serviceA) server.AddInstanceMethods(&serviceB) server.AddInvokeHandler(InvokeHandler)
如上,在InvokeHandler中 func InvokeHandler(name string, args []reflect.Value, context rpc.Context, next rpc.NextInvokeHandler) (results []reflect.Value, err error) name是调用的serviceA或serviceB中的方法名,如何获取这个name是属于哪个 service的调用?