@@ -615,118 +615,74 @@ var (
615615 serializerBoolWorkflow = makeTestWorkflow [bool ]()
616616)
617617
618- // Typed Send/Recv workflows for various types
619- func serializerIntSenderWorkflow (ctx DBOSContext , input int ) (int , error ) {
620- receiverWorkflowID , err := GetWorkflowID (ctx )
621- if err != nil {
622- return 0 , fmt .Errorf ("failed to get workflow ID: %w" , err )
623- }
624- destID := receiverWorkflowID + "-receiver"
625- err = Send (ctx , destID , input , "test-topic" )
626- if err != nil {
627- return 0 , fmt .Errorf ("send failed: %w" , err )
628- }
629- return input , nil
630- }
631-
632- func serializerIntReceiverWorkflow (ctx DBOSContext , _ int ) (int , error ) {
633- received , err := Recv [int ](ctx , "test-topic" , 10 * time .Second )
634- if err != nil {
635- return 0 , fmt .Errorf ("recv failed: %w" , err )
618+ // makeSenderWorkflow creates a generic sender workflow that sends a message to a receiver workflow.
619+ func makeSenderWorkflow [T any ]() Workflow [T , T ] {
620+ return func (ctx DBOSContext , input T ) (T , error ) {
621+ receiverWorkflowID , err := GetWorkflowID (ctx )
622+ if err != nil {
623+ return * new (T ), fmt .Errorf ("failed to get workflow ID: %w" , err )
624+ }
625+ destID := receiverWorkflowID + "-receiver"
626+ err = Send (ctx , destID , input , "test-topic" )
627+ if err != nil {
628+ return * new (T ), fmt .Errorf ("send failed: %w" , err )
629+ }
630+ return input , nil
636631 }
637- return received , nil
638632}
639633
640- func serializerIntPtrSenderWorkflow (ctx DBOSContext , input * int ) (* int , error ) {
641- receiverWorkflowID , err := GetWorkflowID (ctx )
642- if err != nil {
643- return nil , fmt .Errorf ("failed to get workflow ID: %w" , err )
644- }
645- destID := receiverWorkflowID + "-receiver"
646- err = Send (ctx , destID , input , "test-topic" )
647- if err != nil {
648- return nil , fmt .Errorf ("send failed: %w" , err )
634+ // makeReceiverWorkflow creates a generic receiver workflow that receives a message.
635+ func makeReceiverWorkflow [T any ]() Workflow [T , T ] {
636+ return func (ctx DBOSContext , _ T ) (T , error ) {
637+ received , err := Recv [T ](ctx , "test-topic" , 10 * time .Second )
638+ if err != nil {
639+ return * new (T ), fmt .Errorf ("recv failed: %w" , err )
640+ }
641+ return received , nil
649642 }
650- return input , nil
651643}
652644
653- func serializerIntPtrReceiverWorkflow (ctx DBOSContext , _ * int ) (* int , error ) {
654- received , err := Recv [* int ](ctx , "test-topic" , 10 * time .Second )
655- if err != nil {
656- return nil , fmt .Errorf ("recv failed: %w" , err )
645+ // makeSetEventWorkflow creates a generic workflow that sets an event.
646+ func makeSetEventWorkflow [T any ]() Workflow [T , T ] {
647+ return func (ctx DBOSContext , input T ) (T , error ) {
648+ err := SetEvent (ctx , "test-key" , input )
649+ if err != nil {
650+ return * new (T ), fmt .Errorf ("set event failed: %w" , err )
651+ }
652+ return input , nil
657653 }
658- return received , nil
659654}
660655
661- func serializerMyIntSenderWorkflow (ctx DBOSContext , input MyInt ) (MyInt , error ) {
662- receiverWorkflowID , err := GetWorkflowID (ctx )
663- if err != nil {
664- return 0 , fmt .Errorf ("failed to get workflow ID: %w" , err )
665- }
666- destID := receiverWorkflowID + "-receiver"
667- err = Send (ctx , destID , input , "test-topic" )
668- if err != nil {
669- return 0 , fmt .Errorf ("send failed: %w" , err )
656+ // makeGetEventWorkflow creates a generic workflow that gets an event.
657+ func makeGetEventWorkflow [T any ]() Workflow [string , T ] {
658+ return func (ctx DBOSContext , targetWorkflowID string ) (T , error ) {
659+ event , err := GetEvent [T ](ctx , targetWorkflowID , "test-key" , 10 * time .Second )
660+ if err != nil {
661+ return * new (T ), fmt .Errorf ("get event failed: %w" , err )
662+ }
663+ return event , nil
670664 }
671- return input , nil
672665}
673666
674- func serializerMyIntReceiverWorkflow (ctx DBOSContext , _ MyInt ) (MyInt , error ) {
675- received , err := Recv [MyInt ](ctx , "test-topic" , 10 * time .Second )
676- if err != nil {
677- return 0 , fmt .Errorf ("recv failed: %w" , err )
678- }
679- return received , nil
680- }
667+ // Typed Send/Recv workflows for various types
668+ var (
669+ serializerIntSenderWorkflow = makeSenderWorkflow [int ]()
670+ serializerIntReceiverWorkflow = makeReceiverWorkflow [int ]()
671+ serializerIntPtrSenderWorkflow = makeSenderWorkflow [* int ]()
672+ serializerIntPtrReceiverWorkflow = makeReceiverWorkflow [* int ]()
673+ serializerMyIntSenderWorkflow = makeSenderWorkflow [MyInt ]()
674+ serializerMyIntReceiverWorkflow = makeReceiverWorkflow [MyInt ]()
675+ )
681676
682677// Typed SetEvent/GetEvent workflows for various types
683- func serializerIntSetEventWorkflow (ctx DBOSContext , input int ) (int , error ) {
684- err := SetEvent (ctx , "test-key" , input )
685- if err != nil {
686- return 0 , fmt .Errorf ("set event failed: %w" , err )
687- }
688- return input , nil
689- }
690-
691- func serializerIntGetEventWorkflow (ctx DBOSContext , targetWorkflowID string ) (int , error ) {
692- event , err := GetEvent [int ](ctx , targetWorkflowID , "test-key" , 10 * time .Second )
693- if err != nil {
694- return 0 , fmt .Errorf ("get event failed: %w" , err )
695- }
696- return event , nil
697- }
698-
699- func serializerIntPtrSetEventWorkflow (ctx DBOSContext , input * int ) (* int , error ) {
700- err := SetEvent (ctx , "test-key" , input )
701- if err != nil {
702- return nil , fmt .Errorf ("set event failed: %w" , err )
703- }
704- return input , nil
705- }
706-
707- func serializerIntPtrGetEventWorkflow (ctx DBOSContext , targetWorkflowID string ) (* int , error ) {
708- event , err := GetEvent [* int ](ctx , targetWorkflowID , "test-key" , 10 * time .Second )
709- if err != nil {
710- return nil , fmt .Errorf ("get event failed: %w" , err )
711- }
712- return event , nil
713- }
714-
715- func serializerMyIntSetEventWorkflow (ctx DBOSContext , input MyInt ) (MyInt , error ) {
716- err := SetEvent (ctx , "test-key" , input )
717- if err != nil {
718- return 0 , fmt .Errorf ("set event failed: %w" , err )
719- }
720- return input , nil
721- }
722-
723- func serializerMyIntGetEventWorkflow (ctx DBOSContext , targetWorkflowID string ) (MyInt , error ) {
724- event , err := GetEvent [MyInt ](ctx , targetWorkflowID , "test-key" , 10 * time .Second )
725- if err != nil {
726- return 0 , fmt .Errorf ("get event failed: %w" , err )
727- }
728- return event , nil
729- }
678+ var (
679+ serializerIntSetEventWorkflow = makeSetEventWorkflow [int ]()
680+ serializerIntGetEventWorkflow = makeGetEventWorkflow [int ]()
681+ serializerIntPtrSetEventWorkflow = makeSetEventWorkflow [* int ]()
682+ serializerIntPtrGetEventWorkflow = makeGetEventWorkflow [* int ]()
683+ serializerMyIntSetEventWorkflow = makeSetEventWorkflow [MyInt ]()
684+ serializerMyIntGetEventWorkflow = makeGetEventWorkflow [MyInt ]()
685+ )
730686
731687func serializerInterfaceValueWorkflow (ctx DBOSContext , input DataProvider ) (DataProvider , error ) {
732688 return RunAsStep (ctx , func (context context.Context ) (DataProvider , error ) {
0 commit comments