summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorWolfy-J <[email protected]>2019-05-02 22:00:51 +0300
committerWolfy-J <[email protected]>2019-05-02 22:00:51 +0300
commit658254359597aa85fa4679abd821dd06855b61e9 (patch)
tree9bf220d54a1e0896e7b0800f5905f0cab069b8fb /service
parent0cf4be46a04ee33bf04d08787b6dc8b46b932c1a (diff)
stop command added
Diffstat (limited to 'service')
-rw-r--r--service/rpc/service.go7
-rw-r--r--service/rpc/system.go18
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
+}