summaryrefslogtreecommitdiff
path: root/pool/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'pool/interface.go')
-rw-r--r--pool/interface.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/pool/interface.go b/pool/interface.go
new file mode 100644
index 00000000..d089092f
--- /dev/null
+++ b/pool/interface.go
@@ -0,0 +1,53 @@
+package pool
+
+import (
+ "context"
+
+ "github.com/spiral/roadrunner/v2/payload"
+ "github.com/spiral/roadrunner/v2/worker"
+)
+
+// Pool managed set of inner worker processes.
+type Pool interface {
+ // GetConfig returns pool configuration.
+ GetConfig() interface{}
+
+ // Exec executes task with payload
+ Exec(rqs *payload.Payload) (*payload.Payload, error)
+
+ // Workers returns worker list associated with the pool.
+ Workers() (workers []worker.BaseProcess)
+
+ // RemoveWorker removes worker from the pool.
+ RemoveWorker(worker worker.BaseProcess) error
+
+ // Destroy all underlying stack (but let them to complete the task).
+ Destroy(ctx context.Context)
+
+ // ExecWithContext executes task with context which is used with timeout
+ execWithTTL(ctx context.Context, rqs *payload.Payload) (*payload.Payload, error)
+}
+
+// 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
+
+ // Take takes the first free worker
+ Take(ctx context.Context) (worker.BaseProcess, error)
+
+ // Release releases the worker putting it back to the queue
+ Release(w worker.BaseProcess)
+
+ // Allocate - allocates new worker and put it into the WorkerWatcher
+ Allocate() error
+
+ // Destroy destroys the underlying container
+ Destroy(ctx context.Context)
+
+ // List return all container w/o removing it from internal storage
+ List() []worker.BaseProcess
+
+ // Remove will remove worker from the container
+ Remove(wb worker.BaseProcess)
+}