blob: 25e98f0ae2fbd84f3a37e882c92cd1316866978f (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package worker
import (
"context"
"fmt"
"time"
"github.com/spiral/goridge/v3/pkg/relay"
"github.com/spiral/roadrunner/v2/payload"
)
// State represents WorkerProcess status and updated time.
type State interface {
fmt.Stringer
// Value returns StateImpl value
Value() int64
// Set sets the StateImpl
Set(value int64)
// NumExecs shows how many times WorkerProcess was invoked
NumExecs() uint64
// IsActive returns true if WorkerProcess not Inactive or Stopped
IsActive() bool
// RegisterExec using to registering php executions
RegisterExec()
// SetLastUsed sets worker last used time
SetLastUsed(lu uint64)
// LastUsed return worker last used time
LastUsed() uint64
}
type BaseProcess interface {
fmt.Stringer
// Pid returns worker pid.
Pid() int64
// Created returns time worker was created at.
Created() time.Time
// State return receive-only WorkerProcess state object, state can be used to safely access
// WorkerProcess status, time when status changed and number of WorkerProcess executions.
State() State
// Start used to run Cmd and immediately return
Start() error
// Wait must be called once for each WorkerProcess, call will be released once WorkerProcess is
// complete and will return process error (if any), if stderr is presented it's value
// will be wrapped as WorkerError. Method will return error code if php process fails
// to find or Start the script.
Wait() error
// Stop sends soft termination command to the WorkerProcess and waits for process completion.
Stop() error
// Kill kills underlying process, make sure to call Wait() func to gather
// error log from the stderr. Does not waits for process completion!
Kill() error
// Relay returns attached to worker goridge relay
Relay() relay.Relay
// AttachRelay used to attach goridge relay to the worker process
AttachRelay(rl relay.Relay)
}
type SyncWorker interface {
// BaseProcess provides basic functionality for the SyncWorker
BaseProcess
// Exec used to execute payload on the SyncWorker, there is no TIMEOUTS
Exec(rqs *payload.Payload) (*payload.Payload, error)
// ExecWithTTL used to handle Exec with TTL
ExecWithTTL(ctx context.Context, p *payload.Payload) (*payload.Payload, error)
}
|