summaryrefslogtreecommitdiff
path: root/pkg/worker_watcher/interface.go
blob: 4625b7a7d45034ddbcb2db99119e45833e71b979 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package worker_watcher //nolint:golint,stylecheck

import (
	"context"

	"github.com/spiral/roadrunner/v2/pkg/worker"
)

// Watcher is an interface for the Sync workers lifecycle
type Watcher interface {
	// Watch used to add workers to the container
	Watch(workers []worker.BaseProcess) error

	// Get provide first free worker
	Get(ctx context.Context) (worker.BaseProcess, error)

	// Push enqueues worker back
	Push(w worker.BaseProcess)

	// Allocate - allocates new worker and put it into the WorkerWatcher
	Allocate() error

	// Destroy destroys the underlying container
	Destroy(ctx context.Context)

	// WorkersList return all container w/o removing it from internal storage
	List() []worker.BaseProcess

	// RemoveWorker remove worker from the container
	Remove(wb worker.BaseProcess)
}