@@ -127,7 +127,7 @@ func loadRoutes() []RouteData {
127127 return routes
128128}
129129
130- func runTask (ctx context.Context , event any ) (evt * TaskCompleteEvent ) {
130+ func runTask (ctx context.Context , event any ) (evt TaskCompleteEvent ) {
131131 println (fmt .Sprintf ("client: run task with event %v" , reflect .TypeOf (event )))
132132
133133 defer func () {
@@ -136,40 +136,43 @@ func runTask(ctx context.Context, event any) (evt *TaskCompleteEvent) {
136136 // Check if it's the specific error
137137 if err , ok := r .(error ); ok {
138138 if errors .Is (err , ErrTaskInProgress ) {
139- fmt . Printf ( " task in progress\n " )
140- evt = & TaskCompleteEvent {}
139+ println ( "client: task in progress" )
140+ evt = TaskCompleteEvent {}
141141 } else {
142- fmt .Printf ("error %s\n " , err .Error ())
142+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
143143 stackTrace := string (debug .Stack ())
144144 println (stackTrace )
145- evt = errorToTaskComplete (err )
145+ evt = ErrorToTaskComplete (err )
146146 }
147147 } else {
148- fmt .Printf ("error %s\n " , err .Error ())
148+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
149149 stackTrace := string (debug .Stack ())
150150 println (stackTrace )
151- evt = errorToTaskComplete ( ErrUnknownError )
151+ evt = ErrorToTaskComplete ( err )
152152 }
153153 }
154154 }()
155155
156156 switch it := event .(type ) {
157- case * TaskStartEvent :
157+ case TaskStartEvent :
158158 {
159159 println ("client: handle task start event" )
160160
161161 service , err := getService (it .ServiceName )
162162 if err != nil {
163- return errorToTaskComplete (err )
163+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
164+ return ErrorToTaskComplete (err )
164165 }
165166
166167 inputObj , err := service .GetInputType (it .EntryPoint )
167168 if err != nil {
168- return errorToTaskComplete (err )
169+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
170+ return ErrorToTaskComplete (err )
169171 }
170172 err = json .Unmarshal ([]byte (it .Input .TargetReq ), inputObj )
171173 if err != nil {
172- return errorToTaskComplete (err )
174+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
175+ return ErrorToTaskComplete (err )
173176 }
174177
175178 isWorkflow := service .IsWorkflow (it .EntryPoint )
@@ -200,24 +203,24 @@ func runTask(ctx context.Context, event any) (evt *TaskCompleteEvent) {
200203 }
201204
202205 if err != nil {
203- return errorToTaskComplete (err )
206+ fmt .Printf ("client: task completed with error %s\n " , err .Error ())
207+ return ErrorToTaskComplete (err )
204208 }
205209
206- output := TaskOutput {}
207210 if ret == nil {
208- output .IsNull = true
211+ println ("client: task completed" )
212+ return NilValueToTaskComplete ()
209213 } else {
210- output .Output = ret
214+ println ("client: task completed" )
215+ return ValueToTaskComplete (ret )
211216 }
212-
213- println ("client: task completed" )
214- return outputToTaskComplete (output )
215217 }
216- case * ApiStartEvent :
218+ case ApiStartEvent :
217219 {
218220 println ("client: handle http request" )
219221 if httpHandler == nil {
220- return errorToTaskComplete (ErrBadRequest )
222+ fmt .Printf ("client: task completed with error %s\n " , ErrBadRequest .Error ())
223+ return ErrorToTaskComplete (ErrBadRequest )
221224 }
222225
223226 apiCtx := ApiContext {
@@ -230,17 +233,21 @@ func runTask(ctx context.Context, event any) (evt *TaskCompleteEvent) {
230233
231234 req , err := ConvertToHttpRequest (newCtx , it .Request )
232235 if err != nil {
233- println ("client: failed to convert api request" )
234- return errorToTaskComplete (err )
236+ fmt . Printf ("client: task completed with error %s \n " , err . Error () )
237+ return ErrorToTaskComplete (err )
235238 }
236239
237240 resp := invokeHandler (httpHandler , req )
238241 println ("client: task completed" )
239- return & TaskCompleteEvent {Output : TaskOutput {IsAsync : false , IsNull : false , Output : resp , Error : nil }}
242+ return ValueToTaskComplete (resp )
243+ }
244+ default :
245+ {
246+ fmt .Printf ("client: invalid event type %v\n " , reflect .TypeOf (event ))
247+ fmt .Printf ("client: task completed with error %s\n " , ErrBadRequest .Error ())
248+ return ErrorToTaskComplete (ErrBadRequest )
240249 }
241250 }
242-
243- return errorToTaskComplete (ErrBadRequest )
244251}
245252
246253func ConvertToHttpRequest (ctx context.Context , apiReq ApiRequest ) (* http.Request , error ) {
@@ -277,15 +284,31 @@ func ConvertToHttpRequest(ctx context.Context, apiReq ApiRequest) (*http.Request
277284 return req , nil
278285}
279286
280- func errorToTaskComplete (err error ) * TaskCompleteEvent {
281- ret := ErrTaskExecError .Wrap (err )
282- println (fmt .Sprintf ("client: task completed with error, %v" , ret ))
283- output := TaskOutput {IsAsync : false , IsNull : false , Error : & ret }
284- return outputToTaskComplete (output )
287+ func ValueToTaskComplete (val any ) TaskCompleteEvent {
288+ output := TaskOutput {
289+ Output : val ,
290+ }
291+ return TaskCompleteEvent {
292+ Output : output ,
293+ }
294+ }
295+
296+ func NilValueToTaskComplete () TaskCompleteEvent {
297+ output := TaskOutput {
298+ IsNull : true ,
299+ }
300+ return TaskCompleteEvent {
301+ Output : output ,
302+ }
285303}
286304
287- func outputToTaskComplete (output TaskOutput ) * TaskCompleteEvent {
288- return & TaskCompleteEvent {
305+ func ErrorToTaskComplete (err error ) TaskCompleteEvent {
306+ ret := ErrTaskExecError .Wrap (err )
307+ output := TaskOutput {
308+ IsError : true ,
309+ Error : ret ,
310+ }
311+ return TaskCompleteEvent {
289312 Output : output ,
290313 }
291314}
0 commit comments