From fb7210934d7bba9b57ae5b7c7e73d34e2cab6631 Mon Sep 17 00:00:00 2001 From: aarzilli Date: Fri, 29 Jan 2016 12:37:58 +0100 Subject: [PATCH] service/rpc: clean irrelevant net/rpc error messages Fixes #378 --- service/rpc/server.go | 34 +++++++++++++++++++++----------- service/test/integration_test.go | 2 +- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/service/rpc/server.go b/service/rpc/server.go index ef209481..7084880a 100644 --- a/service/rpc/server.go +++ b/service/rpc/server.go @@ -14,6 +14,10 @@ import ( "github.com/derekparker/delve/service/debugger" ) +type ServerImpl struct { + s *RPCServer +} + type RPCServer struct { // config is all the information necessary to start the debugger and server. config *service.Config @@ -24,44 +28,46 @@ type RPCServer struct { } // NewServer creates a new RPCServer. -func NewServer(config *service.Config, logEnabled bool) *RPCServer { +func NewServer(config *service.Config, logEnabled bool) *ServerImpl { log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) if !logEnabled { log.SetOutput(ioutil.Discard) } - return &RPCServer{ - config: config, - listener: config.Listener, + return &ServerImpl{ + &RPCServer{ + config: config, + listener: config.Listener, + }, } } // Stop detaches from the debugger and waits for it to stop. -func (s *RPCServer) Stop(kill bool) error { - return s.debugger.Detach(kill) +func (s *ServerImpl) Stop(kill bool) error { + return s.s.debugger.Detach(kill) } // Run starts a debugger and exposes it with an HTTP server. The debugger // itself can be stopped with the `detach` API. Run blocks until the HTTP // server stops. -func (s *RPCServer) Run() error { +func (s *ServerImpl) Run() error { var err error // Create and start the debugger - if s.debugger, err = debugger.New(&debugger.Config{ - ProcessArgs: s.config.ProcessArgs, - AttachPid: s.config.AttachPid, + if s.s.debugger, err = debugger.New(&debugger.Config{ + ProcessArgs: s.s.config.ProcessArgs, + AttachPid: s.s.config.AttachPid, }); err != nil { return err } go func() { - c, err := s.listener.Accept() + c, err := s.s.listener.Accept() if err != nil { panic(err) } rpcs := grpc.NewServer() - rpcs.Register(s) + rpcs.Register(s.s) rpcs.ServeCodec(jsonrpc.NewServerCodec(c)) }() return nil @@ -76,6 +82,10 @@ func (s *RPCServer) Detach(kill bool, ret *int) error { return s.debugger.Detach(kill) } +func (s *ServerImpl) Restart() error { + return s.s.Restart(nil, nil) +} + func (s *RPCServer) Restart(arg1 interface{}, arg2 *int) error { if s.config.AttachPid != 0 { return errors.New("cannot restart process Delve did not create") diff --git a/service/test/integration_test.go b/service/test/integration_test.go index 61fc486d..58e79e75 100644 --- a/service/test/integration_test.go +++ b/service/test/integration_test.go @@ -122,7 +122,7 @@ func TestRestart_attachPid(t *testing.T) { Listener: nil, AttachPid: 999, }, false) - if err := server.Restart(nil, nil); err == nil { + if err := server.Restart(); err == nil { t.Fatal("expected error on restart after attaching to pid but got none") } }