summaryrefslogtreecommitdiff
path: root/plugins/service/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/service/plugin.go')
-rw-r--r--plugins/service/plugin.go110
1 files changed, 0 insertions, 110 deletions
diff --git a/plugins/service/plugin.go b/plugins/service/plugin.go
deleted file mode 100644
index 3bd0f956..00000000
--- a/plugins/service/plugin.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package service
-
-import (
- "sync"
-
- "github.com/spiral/errors"
- "github.com/spiral/roadrunner/v2/pkg/state/process"
- "github.com/spiral/roadrunner/v2/plugins/config"
- "github.com/spiral/roadrunner/v2/plugins/logger"
-)
-
-const PluginName string = "service"
-
-type Plugin struct {
- sync.Mutex
-
- logger logger.Logger
- cfg Config
-
- // all processes attached to the service
- processes []*Process
-}
-
-func (service *Plugin) Init(cfg config.Configurer, log logger.Logger) error {
- const op = errors.Op("service_plugin_init")
- if !cfg.Has(PluginName) {
- return errors.E(errors.Disabled)
- }
- err := cfg.UnmarshalKey(PluginName, &service.cfg.Services)
- if err != nil {
- return errors.E(op, err)
- }
-
- // init default parameters if not set by user
- service.cfg.InitDefault()
- // save the logger
- service.logger = log
-
- return nil
-}
-
-func (service *Plugin) Serve() chan error {
- errCh := make(chan error, 1)
-
- // start processing
- go func() {
- // lock here, because Stop command might be invoked during the Serve
- service.Lock()
- defer service.Unlock()
-
- service.processes = make([]*Process, 0, len(service.cfg.Services))
- // for the every service
- for k := range service.cfg.Services {
- // create needed number of the processes
- for i := 0; i < service.cfg.Services[k].ProcessNum; i++ {
- // create processor structure, which will process all the services
- service.processes = append(service.processes, NewServiceProcess(
- service.cfg.Services[k].RemainAfterExit,
- service.cfg.Services[k].ExecTimeout,
- service.cfg.Services[k].RestartSec,
- service.cfg.Services[k].Command,
- service.logger,
- errCh,
- ))
- }
- }
-
- // start all processes
- for i := 0; i < len(service.processes); i++ {
- service.processes[i].start()
- }
- }()
-
- return errCh
-}
-
-func (service *Plugin) Workers() []process.State {
- service.Lock()
- defer service.Unlock()
- states := make([]process.State, 0, len(service.processes))
- for i := 0; i < len(service.processes); i++ {
- st, err := process.GeneralProcessState(service.processes[i].Pid, service.processes[i].rawCmd)
- if err != nil {
- continue
- }
- states = append(states, st)
- }
- return states
-}
-
-func (service *Plugin) Stop() error {
- service.Lock()
- defer service.Unlock()
-
- if len(service.processes) > 0 {
- for i := 0; i < len(service.processes); i++ {
- service.processes[i].stop()
- }
- }
- return nil
-}
-
-// Name contains service name.
-func (service *Plugin) Name() string {
- return PluginName
-}
-
-// Available interface implementation
-func (service *Plugin) Available() {
-}