Skip to content

Commit 2d2a082

Browse files
authored
Merge pull request #147 from davrodpin/rpc/params
Add support for parameters on rpc
2 parents d3bb354 + 7748738 commit 2d2a082

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

rpc/rpc.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var registeredMethods = sync.Map{}
1616
var listener net.Listener
1717

1818
const (
19+
// DefaultAddress is the network address used by the rpc server if none is given.
1920
DefaultAddress = "127.0.0.1:0"
2021
)
2122

@@ -79,7 +80,7 @@ func (h *Handler) Handle(ctx context.Context, conn *jsonrpc2.Conn, req *jsonrpc2
7980
}
8081

8182
m, _ := registeredMethods.Load(req.Method)
82-
rm, err := m.(Method)()
83+
rm, err := m.(Method)(req.Params)
8384
if err != nil {
8485
log.WithFields(log.Fields{
8586
"notification": req.Notif,
@@ -113,11 +114,11 @@ func Register(name string, method Method) {
113114
}
114115

115116
// Method represents a procedure that can be called remotely.
116-
type Method func() (json.RawMessage, error)
117+
type Method func(params interface{}) (json.RawMessage, error)
117118

118119
// Call initiates a JSON-RPC call using the specified method and waits for the
119120
// response.
120-
func Call(ctx context.Context, method string) (map[string]interface{}, error) {
121+
func Call(ctx context.Context, method string, params interface{}) (map[string]interface{}, error) {
121122
tc, err := net.Dial("tcp", listener.Addr().String())
122123
if err != nil {
123124
return nil, err
@@ -128,7 +129,7 @@ func Call(ctx context.Context, method string) (map[string]interface{}, error) {
128129
conn := jsonrpc2.NewConn(ctx, stream, h)
129130

130131
var r map[string]interface{}
131-
err = conn.Call(ctx, method, nil, &r)
132+
err = conn.Call(ctx, method, params, &r)
132133
if err != nil {
133134
return nil, err
134135
}

rpc/rpc_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ func TestHandler(t *testing.T) {
1414
method := "test"
1515
expectedResponse := `{"message":"test"}`
1616

17-
rpc.Register(method, func() (json.RawMessage, error) {
17+
rpc.Register(method, func(params interface{}) (json.RawMessage, error) {
1818
return json.RawMessage(expectedResponse), nil
1919
})
2020

21-
response, err := rpc.Call(context.Background(), method)
21+
response, err := rpc.Call(context.Background(), method, "param")
2222
if err != nil {
2323
t.Errorf("error while calling remote procedure: %v", err)
2424
}
@@ -37,7 +37,7 @@ func TestMethodNotRegistered(t *testing.T) {
3737
method := "methodnotregistered"
3838
expectedResponse := fmt.Sprintf(`{"code":-32601,"data":null,"message":"method %s not found"}`, method)
3939

40-
response, err := rpc.Call(context.Background(), method)
40+
response, err := rpc.Call(context.Background(), method, "param")
4141
if err != nil {
4242
t.Errorf("error while calling remote procedure: %v", err)
4343
}
@@ -56,11 +56,11 @@ func TestMethodWithError(t *testing.T) {
5656
method := "testwitherror"
5757
expectedResponse := fmt.Sprintf(`{"code":-32603,"data":null,"message":"error executing rpc method %s"}`, method)
5858

59-
rpc.Register(method, func() (json.RawMessage, error) {
59+
rpc.Register(method, func(params interface{}) (json.RawMessage, error) {
6060
return nil, fmt.Errorf("error")
6161
})
6262

63-
response, err := rpc.Call(context.Background(), method)
63+
response, err := rpc.Call(context.Background(), method, "param")
6464
if err != nil {
6565
t.Errorf("error while calling remote procedure: %v", err)
6666
}

0 commit comments

Comments
 (0)