diff options
Diffstat (limited to 'service')
-rw-r--r-- | service/rpc/service.go | 7 | ||||
-rw-r--r-- | service/rpc/system.go | 18 |
2 files changed, 24 insertions, 1 deletions
diff --git a/service/rpc/service.go b/service/rpc/service.go index 0b957976..eba74c2d 100644 --- a/service/rpc/service.go +++ b/service/rpc/service.go @@ -3,6 +3,7 @@ package rpc import ( "errors" "github.com/spiral/goridge" + "github.com/spiral/roadrunner/service" "github.com/spiral/roadrunner/service/env" "net/rpc" "sync" @@ -21,7 +22,7 @@ type Service struct { } // Init rpc service. Must return true if service is enabled. -func (s *Service) Init(cfg *Config, env env.Environment) (bool, error) { +func (s *Service) Init(cfg *Config, c service.Container, env env.Environment) (bool, error) { if !cfg.Enable { return false, nil } @@ -33,6 +34,10 @@ func (s *Service) Init(cfg *Config, env env.Environment) (bool, error) { env.SetEnv("RR_RPC", cfg.Listen) } + if err := s.Register("system", &systemService{c}); err != nil { + return false, err + } + return true, nil } diff --git a/service/rpc/system.go b/service/rpc/system.go new file mode 100644 index 00000000..778250ad --- /dev/null +++ b/service/rpc/system.go @@ -0,0 +1,18 @@ +package rpc + +import "github.com/spiral/roadrunner/service" + +// systemService service controls roadrunner server. +type systemService struct { + c service.Container +} + +// Stop the underlying c. +func (s *systemService) Stop(stop bool, r *string) error { + if stop { + s.c.Stop() + } + *r = "OK" + + return nil +} |