rpc icon indicating copy to clipboard operation
rpc copied to clipboard

registering function as a service

Open krisiasty opened this issue 6 years ago • 3 comments

I would like to handle method names which are not in a form "Service.Method", whch seems currently imposible.

One way to handle this would be to have *(Server) RegisterFunc method accepting function and string with a method name as parameters.

Example usage:

func HeartBeat(r *http.Request, args *HeartBeatArgs, reply *HeartBeatReply) error {
    reply.TimeStamp = time.Now().UnixNano()
}

s := rpc.NewServer()
s.RegisterService(heartBeat, "heartBeat")

That way any call with method "heartBeat" should be directed to function HeartBeat.

krisiasty avatar Mar 16 '19 16:03 krisiasty

I would also like to know if this is possible. I suspect either using a custom codec or intercepting the http request would make this possible. Any thoughts?

ansermino avatar Mar 28 '19 20:03 ansermino

Looking at https://github.com/gorilla/rpc/blob/bffcfa752ad4e523cc8f720afeb5b985ed41ae16/v2/server.go#L176 it seems that Intercept nor Before functions would get the chance to modify the method/service name before an error is thrown.

ansermino avatar Mar 28 '19 21:03 ansermino

Hit the same issue, but found the solution in https://github.com/divan/gorilla-xmlrpc/issues/14

painhardcore avatar May 04 '20 10:05 painhardcore