@@ -44,7 +44,7 @@ func (svc *Service) genRegisterActivities(f *g.File) {
4444 ).
4545 BlockFunc (func (fn * g.Group ) {
4646 for _ , activity := range svc .activitiesOrdered {
47- fn .Id (fmt .Sprintf ("Register%s " , activity )).Call (
47+ fn .Id (fmt .Sprintf ("Register%sActivity " , activity )).Call (
4848 g .Id ("r" ), g .Id ("activities" ).Dot (activity ),
4949 )
5050 }
@@ -56,8 +56,8 @@ func (svc *Service) genRegisterActivity(f *g.File, activity string) {
5656 method := svc .methods [activity ]
5757 hasInput := ! isEmpty (method .Input )
5858 hasOutput := ! isEmpty (method .Output )
59- f .Commentf ("Register%s registers a %s activity" , activity , activity )
60- f .Func ().Id (fmt .Sprintf ("Register%s " , activity )).
59+ f .Commentf ("Register%sActivity registers a %s activity" , activity , activity )
60+ f .Func ().Id (fmt .Sprintf ("Register%sActivity " , activity )).
6161 Params (
6262 g .Id ("r" ).Qual (workerPkg , "Registry" ),
6363 g .Id ("fn" ).Func ().
@@ -77,7 +77,7 @@ func (svc *Service) genRegisterActivity(f *g.File, activity string) {
7777 Block (
7878 g .Id ("r" ).Dot ("RegisterActivityWithOptions" ).Call (
7979 g .Id ("fn" ), g .Qual (activityPkg , "RegisterOptions" ).Block (
80- g .Id ("Name" ).Op (":" ).Id (fmt .Sprintf ("%sName " , activity )).Op ("," ),
80+ g .Id ("Name" ).Op (":" ).Id (fmt .Sprintf ("%sActivityName " , activity )).Op ("," ),
8181 ),
8282 ),
8383 )
@@ -205,6 +205,7 @@ func (svc *Service) genActivityFunction(f *g.File, activity string, local bool)
205205 g .Op ("*" ).Id (fmt .Sprintf ("%sFuture" , method .GoName )),
206206 ).
207207 BlockFunc (func (fn * g.Group ) {
208+ // initialize activity options if nil
208209 fn .If (g .Id ("opts" ).Op ("==" ).Nil ()).BlockFunc (func (bl * g.Group ) {
209210 optionsFn := "GetActivityOptions"
210211 if local {
@@ -215,6 +216,8 @@ func (svc *Service) genActivityFunction(f *g.File, activity string, local bool)
215216 )
216217 bl .Id ("opts" ).Op ("=" ).Op ("&" ).Id ("activityOpts" )
217218 })
219+
220+ // set default retry policy
218221 if policy := opts .GetRetryPolicy (); policy != nil {
219222 fn .If (g .Id ("opts" ).Dot ("RetryPolicy" ).Op ("==" ).Nil ()).Block (
220223 g .Id ("opts" ).Dot ("RetryPolicy" ).Op ("=" ).Op ("&" ).Qual (temporalPkg , "RetryPolicy" ).BlockFunc (func (fields * g.Group ) {
@@ -236,27 +239,36 @@ func (svc *Service) genActivityFunction(f *g.File, activity string, local bool)
236239 }),
237240 )
238241 }
239- if timeout := opts .GetHeartbeatTimeout (); timeout .IsValid () {
242+
243+ // set default heartbeat timeout
244+ if timeout := opts .GetHeartbeatTimeout (); ! local && timeout .IsValid () {
240245 fn .If (g .Id ("opts" ).Dot ("HeartbeatTimeout" ).Op ("==" ).Lit (0 )).Block (
241246 g .Id ("opts" ).Dot ("HeartbeatTimeout" ).Op ("=" ).Id (strconv .FormatInt (timeout .AsDuration ().Nanoseconds (), 10 )).Comment (timeout .AsDuration ().String ()),
242247 )
243248 }
244249
250+ // set default schedule to close timeout
245251 if timeout := opts .GetScheduleToCloseTimeout (); timeout .IsValid () {
246252 fn .If (g .Id ("opts" ).Dot ("ScheduleToCloseTimeout" ).Op ("==" ).Lit (0 )).Block (
247253 g .Id ("opts" ).Dot ("ScheduleToCloseTimeout" ).Op ("=" ).Id (strconv .FormatInt (timeout .AsDuration ().Nanoseconds (), 10 )).Comment (timeout .AsDuration ().String ()),
248254 )
249255 }
250- if timeout := opts .GetScheduleToStartTimeout (); timeout .IsValid () {
256+
257+ // set default schedule to start timeout
258+ if timeout := opts .GetScheduleToStartTimeout (); ! local && timeout .IsValid () {
251259 fn .If (g .Id ("opts" ).Dot ("ScheduleToStartTimeout" ).Op ("==" ).Lit (0 )).Block (
252260 g .Id ("opts" ).Dot ("ScheduleToStartTimeout" ).Op ("=" ).Id (strconv .FormatInt (timeout .AsDuration ().Nanoseconds (), 10 )).Comment (timeout .AsDuration ().String ()),
253261 )
254262 }
263+
264+ // set default start to close timeout
255265 if timeout := opts .GetStartToCloseTimeout (); timeout .IsValid () {
256266 fn .If (g .Id ("opts" ).Dot ("StartToCloseTimeout" ).Op ("==" ).Lit (0 )).Block (
257267 g .Id ("opts" ).Dot ("StartToCloseTimeout" ).Op ("=" ).Id (strconv .FormatInt (timeout .AsDuration ().Nanoseconds (), 10 )).Comment (timeout .AsDuration ().String ()),
258268 )
259269 }
270+
271+ // inject ctx with activity options
260272 if local {
261273 fn .Id ("ctx" ).Op ("=" ).Qual (workflowPkg , "WithLocalActivityOptions" ).Call (
262274 g .Id ("ctx" ), g .Op ("*" ).Id ("opts" ),
@@ -267,21 +279,35 @@ func (svc *Service) genActivityFunction(f *g.File, activity string, local bool)
267279 g .Id ("ctx" ), g .Op ("*" ).Id ("opts" ),
268280 )
269281 }
282+
283+ // if activity function nil for local activity, replace with activity name
284+ if local {
285+ fn .Var ().Id ("activity" ).Any ()
286+ fn .If (g .Id ("fn" ).Op ("==" ).Nil ()).
287+ Block (
288+ g .Id ("activity" ).Op ("=" ).Id (fmt .Sprintf ("%sActivityName" , activity )),
289+ ).
290+ Else ().
291+ Block (
292+ g .Id ("activity" ).Op ("=" ).Id ("fn" ),
293+ )
294+ }
295+
270296 fn .Return (
271- g .Op ("&" ).Id (fmt .Sprintf ("%sFuture" , method .GoName )).BlockFunc (func (bl * g.Group ) {
297+ g .Op ("&" ).Id (fmt .Sprintf ("%sFuture" , method .GoName )).ValuesFunc (func (bl * g.Group ) {
272298 future := bl .Id ("Future" ).Op (":" )
273299 if local {
274300 future .Qual (workflowPkg , "ExecuteLocalActivity" ).CallFunc (func (returnVals * g.Group ) {
275301 returnVals .Id ("ctx" )
276- returnVals .Id ("fn " )
302+ returnVals .Id ("activity " )
277303 if hasInput {
278304 returnVals .Id ("req" )
279305 }
280306 }).Op ("," )
281307 } else {
282308 future .Qual (workflowPkg , "ExecuteActivity" ).CallFunc (func (returnVals * g.Group ) {
283309 returnVals .Id ("ctx" )
284- returnVals .Id (fmt .Sprintf ("%sName " , method .GoName ))
310+ returnVals .Id (fmt .Sprintf ("%sActivityName " , method .GoName ))
285311 if hasInput {
286312 returnVals .Id ("req" )
287313 }
0 commit comments