summaryrefslogtreecommitdiff
path: root/plugins/http/rpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/http/rpc.go')
-rw-r--r--plugins/http/rpc.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/plugins/http/rpc.go b/plugins/http/rpc.go
new file mode 100644
index 00000000..7b38dece
--- /dev/null
+++ b/plugins/http/rpc.go
@@ -0,0 +1,34 @@
+package http
+
+import (
+ "github.com/pkg/errors"
+ "github.com/spiral/roadrunner/util"
+)
+
+type rpcServer struct{ svc *Service }
+
+// WorkerList contains list of workers.
+type WorkerList struct {
+ // Workers is list of workers.
+ Workers []*util.State `json:"workers"`
+}
+
+// Reset resets underlying RR worker pool and restarts all of it's workers.
+func (rpc *rpcServer) Reset(reset bool, r *string) error {
+ if rpc.svc == nil || rpc.svc.handler == nil {
+ return errors.New("http server is not running")
+ }
+
+ *r = "OK"
+ return rpc.svc.Server().Reset()
+}
+
+// Workers returns list of active workers and their stats.
+func (rpc *rpcServer) Workers(list bool, r *WorkerList) (err error) {
+ if rpc.svc == nil || rpc.svc.handler == nil {
+ return errors.New("http server is not running")
+ }
+
+ r.Workers, err = util.ServerState(rpc.svc.Server())
+ return err
+}