-
Notifications
You must be signed in to change notification settings - Fork 46
/
signal.go
26 lines (22 loc) · 875 Bytes
/
signal.go
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
package workflow
import (
"github.com/cschleiden/go-workflows/internal/signals"
"github.com/cschleiden/go-workflows/internal/workflowstate"
"github.com/cschleiden/go-workflows/internal/workflowtracer"
)
// NewSignalChannel returns a new signal channel.
func NewSignalChannel[T any](ctx Context, name string) Channel[T] {
wfState := workflowstate.WorkflowState(ctx)
return workflowstate.GetSignalChannel[T](ctx, wfState, name)
}
// SignalWorkflow sends a signal to another running workflow instance.
func SignalWorkflow[T any](ctx Context, instanceID string, name string, arg T) Future[any] {
ctx, span := workflowtracer.Tracer(ctx).Start(ctx, "SignalWorkflow")
defer span.End()
var a *signals.Activities
return ExecuteActivity[any](ctx, ActivityOptions{
RetryOptions: RetryOptions{
MaxAttempts: 1,
},
}, a.DeliverWorkflowSignal, instanceID, name, arg)
}