Skip to content

Commit b7b27d4

Browse files
author
Christopher Ludden
committed
fix: refactors child workflow run signals to use sync/async pattern
1 parent 52f3052 commit b7b27d4

File tree

3 files changed

+54
-8
lines changed

3 files changed

+54
-8
lines changed

gen/example/v1/example_temporal.pb.go

Lines changed: 7 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/simple/simple_temporal.pb.go

Lines changed: 25 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/plugin/worker.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,8 +608,9 @@ func (svc *Service) genWorkerWorkflowChildRunSignals(f *g.File, workflow string)
608608
signal := signalOpts.GetRef()
609609
handler := svc.methods[signal]
610610
hasInput := !isEmpty(handler.Input)
611+
asyncName := toCamel("%sAsync", signal)
611612

612-
f.Commentf("%s sends a(n) %q signal request to the child workflow", signal, handler.Desc.FullName())
613+
f.Commentf("%s sends a(n) %q signal request to the child workflow", signal, svc.fqnForSignal(signal))
613614
f.Func().
614615
Params(g.Id("r").Op("*").Id(typeName)).
615616
Id(signal).
@@ -619,6 +620,26 @@ func (svc *Service) genWorkerWorkflowChildRunSignals(f *g.File, workflow string)
619620
params.Id("input").Op("*").Id(handler.Input.GoIdent.GoName)
620621
}
621622
}).
623+
Params(g.Error()).
624+
Block(
625+
g.Return(g.Id("r").Dot(asyncName).CallFunc(func(args *g.Group) {
626+
args.Id("ctx")
627+
if hasInput {
628+
args.Id("input")
629+
}
630+
})).Dot("Get").Call(g.Id("ctx"), g.Nil()),
631+
)
632+
633+
f.Commentf("%s sends a(n) %q signal request to the child workflow", asyncName, svc.fqnForSignal(signal))
634+
f.Func().
635+
Params(g.Id("r").Op("*").Id(typeName)).
636+
Id(asyncName).
637+
ParamsFunc(func(params *g.Group) {
638+
params.Id("ctx").Qual(workflowPkg, "Context")
639+
if hasInput {
640+
params.Id("input").Op("*").Id(handler.Input.GoIdent.GoName)
641+
}
642+
}).
622643
Params(g.Qual(workflowPkg, "Future")).
623644
Block(
624645
g.Return(g.Id("r").Dot("Future").Dot("SignalChildWorkflow").CallFunc(func(args *g.Group) {

0 commit comments

Comments
 (0)