From e8229febb001cd4bf39313c2476702e98920e482 Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Thu, 25 Nov 2021 16:58:13 +0000 Subject: [PATCH] Expose NoopHandler --- call_opt_test.go | 6 +++--- codec_test.go | 2 +- conn_opt_test.go | 4 ++-- jsonrpc2.go | 6 ++++++ jsonrpc2_test.go | 8 ++------ 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/call_opt_test.go b/call_opt_test.go index b64f661..102d430 100644 --- a/call_opt_test.go +++ b/call_opt_test.go @@ -22,7 +22,7 @@ func TestPickID(t *testing.T) { } }) connA := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), handler) - connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), noopHandler{}) + connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), jsonrpc2.NoopHandler{}) defer connA.Close() defer connB.Close() @@ -81,7 +81,7 @@ func TestStringID(t *testing.T) { } }) connA := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), handler) - connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), noopHandler{}) + connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), jsonrpc2.NoopHandler{}) defer connA.Close() defer connB.Close() @@ -131,7 +131,7 @@ func TestExtraField(t *testing.T) { } }) connA := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), handler) - connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), noopHandler{}) + connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), jsonrpc2.NoopHandler{}) defer connA.Close() defer connB.Close() diff --git a/codec_test.go b/codec_test.go index 4dc7555..d1d8c7b 100644 --- a/codec_test.go +++ b/codec_test.go @@ -50,7 +50,7 @@ func TestPlainObjectCodec(t *testing.T) { connA := jsonrpc2.NewConn( context.Background(), jsonrpc2.NewBufferedStream(cA, jsonrpc2.PlainObjectCodec{}), - noopHandler{}, + jsonrpc2.NoopHandler{}, ) defer connA.Close() diff --git a/conn_opt_test.go b/conn_opt_test.go index df53a1a..37a2aa0 100644 --- a/conn_opt_test.go +++ b/conn_opt_test.go @@ -26,13 +26,13 @@ func TestSetLogger(t *testing.T) { connA := jsonrpc2.NewConn( ctx, jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), - noopHandler{}, + jsonrpc2.NoopHandler{}, jsonrpc2.SetLogger(logger), ) connB := jsonrpc2.NewConn( ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), - noopHandler{}, + jsonrpc2.NoopHandler{}, ) defer connA.Close() defer connB.Close() diff --git a/jsonrpc2.go b/jsonrpc2.go index 7815c84..2ec3fd8 100644 --- a/jsonrpc2.go +++ b/jsonrpc2.go @@ -303,6 +303,12 @@ type Handler interface { Handle(context.Context, *Conn, *Request) } +// NoopHandler is a Handler that does nothing. It is useful for +// creating a Handler that can be used as a default handler. It is also +// useful for testing. +type NoopHandler struct {} +func (NoopHandler) Handle(ctx context.Context, conn *Conn, req *Request) {} + // ID represents a JSON-RPC 2.0 request ID, which may be either a // string or number (or null, which is unsupported). type ID struct { diff --git a/jsonrpc2_test.go b/jsonrpc2_test.go index f9dd950..534aa5c 100644 --- a/jsonrpc2_test.go +++ b/jsonrpc2_test.go @@ -265,7 +265,7 @@ func TestHandlerBlocking(t *testing.T) { wg.Done() }) connA := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}), handler) - connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), noopHandler{}) + connB := jsonrpc2.NewConn(ctx, jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}), jsonrpc2.NoopHandler{}) defer connA.Close() defer connB.Close() @@ -287,10 +287,6 @@ func TestHandlerBlocking(t *testing.T) { } } -type noopHandler struct{} - -func (noopHandler) Handle(ctx context.Context, conn *jsonrpc2.Conn, req *jsonrpc2.Request) {} - type readWriteCloser struct { read, write func(p []byte) (n int, err error) } @@ -348,7 +344,7 @@ func TestConn_DisconnectNotify_Close_async(t *testing.T) { } func TestConn_Close_waitingForResponse(t *testing.T) { - c := jsonrpc2.NewConn(context.Background(), jsonrpc2.NewBufferedStream(&readWriteCloser{eof, eof}, jsonrpc2.VarintObjectCodec{}), noopHandler{}) + c := jsonrpc2.NewConn(context.Background(), jsonrpc2.NewBufferedStream(&readWriteCloser{eof, eof}, jsonrpc2.VarintObjectCodec{}), jsonrpc2.NoopHandler{}) done := make(chan struct{}) go func() { if err := c.Call(context.Background(), "m", nil, nil); err != jsonrpc2.ErrClosed {