temporalio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -1,694 +0,0 @@
1
- mod options;
2
-
3
- pub use options::{
4
- ActivityOptions, ChildWorkflowOptions, LocalActivityOptions, Signal, SignalData,
5
- SignalWorkflowOptions,
6
- };
7
-
8
- use crate::{
9
- workflow_context::options::IntoWorkflowCommand, CancelExternalWfResult, CancellableID,
10
- CommandCreateRequest, CommandSubscribeChildWorkflowCompletion, RustWfCmd,
11
- SignalExternalWfResult, TimerResult, UnblockEvent, Unblockable,
12
- };
13
- use crossbeam::channel::{Receiver, Sender};
14
- use futures::{task::Context, FutureExt, Stream};
15
- use parking_lot::RwLock;
16
- use std::{
17
- collections::HashMap,
18
- future::Future,
19
- marker::PhantomData,
20
- pin::Pin,
21
- sync::{
22
- atomic::{AtomicBool, Ordering},
23
- Arc,
24
- },
25
- task::Poll,
26
- time::{Duration, SystemTime},
27
- };
28
- use temporal_sdk_core_protos::{
29
- coresdk::{
30
- activity_result::{activity_resolution, ActivityResolution},
31
- child_workflow::ChildWorkflowResult,
32
- common::NamespacedWorkflowExecution,
33
- workflow_activation::resolve_child_workflow_execution_start::Status as ChildWorkflowStartStatus,
34
- workflow_commands::{
35
- request_cancel_external_workflow_execution as cancel_we,
36
- signal_external_workflow_execution as sig_we, workflow_command,
37
- ModifyWorkflowProperties, RequestCancelExternalWorkflowExecution, SetPatchMarker,
38
- SignalExternalWorkflowExecution, StartTimer, UpsertWorkflowSearchAttributes,
39
- },
40
- },
41
- temporal::api::common::v1::{Memo, Payload},
42
- };
43
- use tokio::sync::{mpsc, oneshot, watch};
44
- use tokio_stream::wrappers::UnboundedReceiverStream;
45
-
46
- /// Used within workflows to issue commands, get info, etc.
47
- pub struct WfContext {
48
- namespace: String,
49
- task_queue: String,
50
- args: Vec<Payload>,
51
-
52
- chan: Sender<RustWfCmd>,
53
- am_cancelled: watch::Receiver<bool>,
54
- shared: Arc<RwLock<WfContextSharedData>>,
55
-
56
- seq_nums: RwLock<WfCtxProtectedDat>,
57
- }
58
-
59
- struct WfCtxProtectedDat {
60
- next_timer_sequence_number: u32,
61
- next_activity_sequence_number: u32,
62
- next_child_workflow_sequence_number: u32,
63
- next_cancel_external_wf_sequence_number: u32,
64
- next_signal_external_wf_sequence_number: u32,
65
- }
66
-
67
- impl WfCtxProtectedDat {
68
- fn next_timer_seq(&mut self) -> u32 {
69
- let seq = self.next_timer_sequence_number;
70
- self.next_timer_sequence_number += 1;
71
- seq
72
- }
73
- fn next_activity_seq(&mut self) -> u32 {
74
- let seq = self.next_activity_sequence_number;
75
- self.next_activity_sequence_number += 1;
76
- seq
77
- }
78
- fn next_child_workflow_seq(&mut self) -> u32 {
79
- let seq = self.next_child_workflow_sequence_number;
80
- self.next_child_workflow_sequence_number += 1;
81
- seq
82
- }
83
- fn next_cancel_external_wf_seq(&mut self) -> u32 {
84
- let seq = self.next_cancel_external_wf_sequence_number;
85
- self.next_cancel_external_wf_sequence_number += 1;
86
- seq
87
- }
88
- fn next_signal_external_wf_seq(&mut self) -> u32 {
89
- let seq = self.next_signal_external_wf_sequence_number;
90
- self.next_signal_external_wf_sequence_number += 1;
91
- seq
92
- }
93
- }
94
-
95
- #[derive(Clone, Debug, Default)]
96
- pub struct WfContextSharedData {
97
- /// Maps change ids -> resolved status
98
- pub changes: HashMap<String, bool>,
99
- pub is_replaying: bool,
100
- pub wf_time: Option<SystemTime>,
101
- }
102
-
103
- // TODO: Dataconverter type interface to replace Payloads here. Possibly just use serde
104
- // traits.
105
- impl WfContext {
106
- /// Create a new wf context, returning the context itself and a receiver which outputs commands
107
- /// sent from the workflow.
108
- pub(super) fn new(
109
- namespace: String,
110
- task_queue: String,
111
- args: Vec<Payload>,
112
- am_cancelled: watch::Receiver<bool>,
113
- ) -> (Self, Receiver<RustWfCmd>) {
114
- // We need to use a normal std channel since our receiving side is non-async
115
- let (chan, rx) = crossbeam::channel::unbounded();
116
- (
117
- Self {
118
- namespace,
119
- task_queue,
120
- args,
121
- chan,
122
- am_cancelled,
123
- shared: Arc::new(RwLock::new(Default::default())),
124
- seq_nums: RwLock::new(WfCtxProtectedDat {
125
- next_timer_sequence_number: 1,
126
- next_activity_sequence_number: 1,
127
- next_child_workflow_sequence_number: 1,
128
- next_cancel_external_wf_sequence_number: 1,
129
- next_signal_external_wf_sequence_number: 1,
130
- }),
131
- },
132
- rx,
133
- )
134
- }
135
-
136
- /// Return the namespace the workflow is executing in
137
- pub fn namespace(&self) -> &str {
138
- &self.namespace
139
- }
140
-
141
- /// Get the arguments provided to the workflow upon execution start
142
- pub fn get_args(&self) -> &[Payload] {
143
- self.args.as_slice()
144
- }
145
-
146
- /// Return the current time according to the workflow (which is not wall-clock time).
147
- pub fn workflow_time(&self) -> Option<SystemTime> {
148
- self.shared.read().wf_time
149
- }
150
-
151
- pub(crate) fn get_shared_data(&self) -> Arc<RwLock<WfContextSharedData>> {
152
- self.shared.clone()
153
- }
154
-
155
- /// A future that resolves if/when the workflow is cancelled
156
- pub async fn cancelled(&mut self) {
157
- if *self.am_cancelled.borrow() {
158
- return;
159
- }
160
- self.am_cancelled
161
- .changed()
162
- .await
163
- .expect("Cancelled send half not dropped");
164
- }
165
-
166
- /// Request to create a timer
167
- pub fn timer(&self, duration: Duration) -> impl CancellableFuture<TimerResult> {
168
- let seq = self.seq_nums.write().next_timer_seq();
169
- let (cmd, unblocker) = CancellableWFCommandFut::new(CancellableID::Timer(seq));
170
- self.send(
171
- CommandCreateRequest {
172
- cmd: StartTimer {
173
- seq,
174
- start_to_fire_timeout: Some(
175
- duration
176
- .try_into()
177
- .expect("Durations must fit into 64 bits"),
178
- ),
179
- }
180
- .into(),
181
- unblocker,
182
- }
183
- .into(),
184
- );
185
- cmd
186
- }
187
-
188
- /// Request to run an activity
189
- pub fn activity(
190
- &self,
191
- mut opts: ActivityOptions,
192
- ) -> impl CancellableFuture<ActivityResolution> {
193
- if opts.task_queue.is_empty() {
194
- opts.task_queue = self.task_queue.clone()
195
- }
196
- let seq = self.seq_nums.write().next_activity_seq();
197
- let (cmd, unblocker) = CancellableWFCommandFut::new(CancellableID::Activity(seq));
198
- self.send(
199
- CommandCreateRequest {
200
- cmd: opts.into_command(seq).into(),
201
- unblocker,
202
- }
203
- .into(),
204
- );
205
- cmd
206
- }
207
-
208
- /// Request to run a local activity
209
- pub fn local_activity(
210
- &self,
211
- opts: LocalActivityOptions,
212
- ) -> impl CancellableFuture<ActivityResolution> + '_ {
213
- LATimerBackoffFut::new(opts, self)
214
- }
215
-
216
- /// Request to run a local activity with no implementation of timer-backoff based retrying.
217
- fn local_activity_no_timer_retry(
218
- &self,
219
- opts: LocalActivityOptions,
220
- ) -> impl CancellableFuture<ActivityResolution> {
221
- let seq = self.seq_nums.write().next_activity_seq();
222
- let (cmd, unblocker) = CancellableWFCommandFut::new(CancellableID::LocalActivity(seq));
223
- self.send(
224
- CommandCreateRequest {
225
- cmd: opts.into_command(seq).into(),
226
- unblocker,
227
- }
228
- .into(),
229
- );
230
- cmd
231
- }
232
-
233
- /// Creates a child workflow stub with the provided options
234
- pub fn child_workflow(&self, opts: ChildWorkflowOptions) -> ChildWorkflow {
235
- ChildWorkflow { opts }
236
- }
237
-
238
- /// Check (or record) that this workflow history was created with the provided patch
239
- pub fn patched(&self, patch_id: &str) -> bool {
240
- self.patch_impl(patch_id, false)
241
- }
242
-
243
- /// Record that this workflow history was created with the provided patch, and it is being
244
- /// phased out.
245
- pub fn deprecate_patch(&self, patch_id: &str) {
246
- self.patch_impl(patch_id, true);
247
- }
248
-
249
- fn patch_impl(&self, patch_id: &str, deprecated: bool) -> bool {
250
- self.send(
251
- workflow_command::Variant::SetPatchMarker(SetPatchMarker {
252
- patch_id: patch_id.to_string(),
253
- deprecated,
254
- })
255
- .into(),
256
- );
257
- // See if we already know about the status of this change
258
- if let Some(present) = self.shared.read().changes.get(patch_id) {
259
- return *present;
260
- }
261
-
262
- // If we don't already know about the change, that means there is no marker in history,
263
- // and we should return false if we are replaying
264
- let res = !self.shared.read().is_replaying;
265
-
266
- self.shared
267
- .write()
268
- .changes
269
- .insert(patch_id.to_string(), res);
270
-
271
- res
272
- }
273
-
274
- /// Send a signal to an external workflow. May resolve as a failure if the signal didn't work
275
- /// or was cancelled.
276
- pub fn signal_workflow(
277
- &self,
278
- opts: impl Into<SignalWorkflowOptions>,
279
- ) -> impl CancellableFuture<SignalExternalWfResult> {
280
- let options: SignalWorkflowOptions = opts.into();
281
- let target = sig_we::Target::WorkflowExecution(NamespacedWorkflowExecution {
282
- namespace: self.namespace.clone(),
283
- workflow_id: options.workflow_id,
284
- run_id: options.run_id.unwrap_or_default(),
285
- });
286
- self.send_signal_wf(target, options.signal)
287
- }
288
-
289
- /// Add or create a set of search attributes
290
- pub fn upsert_search_attributes(&self, attr_iter: impl IntoIterator<Item = (String, Payload)>) {
291
- self.send(RustWfCmd::NewNonblockingCmd(
292
- workflow_command::Variant::UpsertWorkflowSearchAttributes(
293
- UpsertWorkflowSearchAttributes {
294
- search_attributes: HashMap::from_iter(attr_iter.into_iter()),
295
- },
296
- ),
297
- ))
298
- }
299
-
300
- /// Add or create a set of search attributes
301
- pub fn upsert_memo(&self, attr_iter: impl IntoIterator<Item = (String, Payload)>) {
302
- self.send(RustWfCmd::NewNonblockingCmd(
303
- workflow_command::Variant::ModifyWorkflowProperties(ModifyWorkflowProperties {
304
- upserted_memo: Some(Memo {
305
- fields: HashMap::from_iter(attr_iter.into_iter()),
306
- }),
307
- }),
308
- ))
309
- }
310
-
311
- /// Return a stream that produces values when the named signal is sent to this workflow
312
- pub fn make_signal_channel(&self, signal_name: impl Into<String>) -> DrainableSignalStream {
313
- let (tx, rx) = mpsc::unbounded_channel();
314
- self.send(RustWfCmd::SubscribeSignal(signal_name.into(), tx));
315
- DrainableSignalStream(UnboundedReceiverStream::new(rx))
316
- }
317
-
318
- /// Force a workflow task failure (EX: in order to retry on non-sticky queue)
319
- pub fn force_task_fail(&self, with: anyhow::Error) {
320
- self.send(with.into());
321
- }
322
-
323
- /// Request the cancellation of an external workflow. May resolve as a failure if the workflow
324
- /// was not found or the cancel was otherwise unsendable.
325
- pub fn cancel_external(
326
- &self,
327
- target: NamespacedWorkflowExecution,
328
- ) -> impl Future<Output = CancelExternalWfResult> {
329
- let target = cancel_we::Target::WorkflowExecution(target);
330
- let seq = self.seq_nums.write().next_cancel_external_wf_seq();
331
- let (cmd, unblocker) = WFCommandFut::new();
332
- self.send(
333
- CommandCreateRequest {
334
- cmd: RequestCancelExternalWorkflowExecution {
335
- seq,
336
- target: Some(target),
337
- }
338
- .into(),
339
- unblocker,
340
- }
341
- .into(),
342
- );
343
- cmd
344
- }
345
-
346
- fn send_signal_wf(
347
- &self,
348
- target: sig_we::Target,
349
- signal: Signal,
350
- ) -> impl CancellableFuture<SignalExternalWfResult> {
351
- let seq = self.seq_nums.write().next_signal_external_wf_seq();
352
- let (cmd, unblocker) =
353
- CancellableWFCommandFut::new(CancellableID::SignalExternalWorkflow(seq));
354
- self.send(
355
- CommandCreateRequest {
356
- cmd: SignalExternalWorkflowExecution {
357
- seq,
358
- signal_name: signal.signal_name,
359
- args: signal.data.input,
360
- target: Some(target),
361
- headers: signal.data.headers,
362
- }
363
- .into(),
364
- unblocker,
365
- }
366
- .into(),
367
- );
368
- cmd
369
- }
370
-
371
- /// Cancel any cancellable operation by ID
372
- fn cancel(&self, cancellable_id: CancellableID) {
373
- self.send(RustWfCmd::Cancel(cancellable_id));
374
- }
375
-
376
- fn send(&self, c: RustWfCmd) {
377
- self.chan.send(c).unwrap();
378
- }
379
- }
380
-
381
- /// Helper Wrapper that can drain the channel into a Vec<SignalData> in a blocking way. Useful
382
- /// for making sure channels are empty before ContinueAsNew-ing a workflow
383
- pub struct DrainableSignalStream(UnboundedReceiverStream<SignalData>);
384
-
385
- impl DrainableSignalStream {
386
- pub fn drain_all(self) -> Vec<SignalData> {
387
- let mut receiver = self.0.into_inner();
388
- let mut signals = vec![];
389
- while let Ok(s) = receiver.try_recv() {
390
- signals.push(s);
391
- }
392
- signals
393
- }
394
- }
395
-
396
- impl Stream for DrainableSignalStream {
397
- type Item = SignalData;
398
-
399
- fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
400
- Pin::new(&mut self.0).poll_next(cx)
401
- }
402
- }
403
-
404
- /// A Future that can be cancelled.
405
- /// Used in the prototype SDK for cancelling operations like timers and activities.
406
- pub trait CancellableFuture<T>: Future<Output = T> {
407
- /// Cancel this Future
408
- fn cancel(&self, cx: &WfContext);
409
- }
410
-
411
- struct WFCommandFut<T, D> {
412
- _unused: PhantomData<T>,
413
- result_rx: oneshot::Receiver<UnblockEvent>,
414
- other_dat: Option<D>,
415
- }
416
- impl<T> WFCommandFut<T, ()> {
417
- fn new() -> (Self, oneshot::Sender<UnblockEvent>) {
418
- Self::new_with_dat(())
419
- }
420
- }
421
-
422
- impl<T, D> WFCommandFut<T, D> {
423
- fn new_with_dat(other_dat: D) -> (Self, oneshot::Sender<UnblockEvent>) {
424
- let (tx, rx) = oneshot::channel();
425
- (
426
- Self {
427
- _unused: PhantomData,
428
- result_rx: rx,
429
- other_dat: Some(other_dat),
430
- },
431
- tx,
432
- )
433
- }
434
- }
435
-
436
- impl<T, D> Unpin for WFCommandFut<T, D> where T: Unblockable<OtherDat = D> {}
437
- impl<T, D> Future for WFCommandFut<T, D>
438
- where
439
- T: Unblockable<OtherDat = D>,
440
- {
441
- type Output = T;
442
-
443
- fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
444
- self.result_rx.poll_unpin(cx).map(|x| {
445
- // SAFETY: Because we can only enter this section once the future has resolved, we
446
- // know it will never be polled again, therefore consuming the option is OK.
447
- let od = self
448
- .other_dat
449
- .take()
450
- .expect("Other data must exist when resolving command future");
451
- Unblockable::unblock(x.unwrap(), od)
452
- })
453
- }
454
- }
455
-
456
- struct CancellableWFCommandFut<T, D> {
457
- cmd_fut: WFCommandFut<T, D>,
458
- cancellable_id: CancellableID,
459
- }
460
- impl<T> CancellableWFCommandFut<T, ()> {
461
- fn new(cancellable_id: CancellableID) -> (Self, oneshot::Sender<UnblockEvent>) {
462
- Self::new_with_dat(cancellable_id, ())
463
- }
464
- }
465
- impl<T, D> CancellableWFCommandFut<T, D> {
466
- fn new_with_dat(
467
- cancellable_id: CancellableID,
468
- other_dat: D,
469
- ) -> (Self, oneshot::Sender<UnblockEvent>) {
470
- let (cmd_fut, sender) = WFCommandFut::new_with_dat(other_dat);
471
- (
472
- Self {
473
- cmd_fut,
474
- cancellable_id,
475
- },
476
- sender,
477
- )
478
- }
479
- }
480
- impl<T, D> Unpin for CancellableWFCommandFut<T, D> where T: Unblockable<OtherDat = D> {}
481
- impl<T, D> Future for CancellableWFCommandFut<T, D>
482
- where
483
- T: Unblockable<OtherDat = D>,
484
- {
485
- type Output = T;
486
-
487
- fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
488
- self.cmd_fut.poll_unpin(cx)
489
- }
490
- }
491
-
492
- impl<T, D> CancellableFuture<T> for CancellableWFCommandFut<T, D>
493
- where
494
- T: Unblockable<OtherDat = D>,
495
- {
496
- fn cancel(&self, cx: &WfContext) {
497
- cx.cancel(self.cancellable_id.clone());
498
- }
499
- }
500
-
501
- struct LATimerBackoffFut<'a> {
502
- la_opts: LocalActivityOptions,
503
- current_fut: Pin<Box<dyn CancellableFuture<ActivityResolution> + Send + Unpin + 'a>>,
504
- timer_fut: Option<Pin<Box<dyn CancellableFuture<TimerResult> + Send + Unpin + 'a>>>,
505
- ctx: &'a WfContext,
506
- next_attempt: u32,
507
- next_sched_time: Option<prost_types::Timestamp>,
508
- did_cancel: AtomicBool,
509
- }
510
- impl<'a> LATimerBackoffFut<'a> {
511
- pub(crate) fn new(opts: LocalActivityOptions, ctx: &'a WfContext) -> Self {
512
- Self {
513
- la_opts: opts.clone(),
514
- current_fut: Box::pin(ctx.local_activity_no_timer_retry(opts)),
515
- timer_fut: None,
516
- ctx,
517
- next_attempt: 1,
518
- next_sched_time: None,
519
- did_cancel: AtomicBool::new(false),
520
- }
521
- }
522
- }
523
- impl<'a> Unpin for LATimerBackoffFut<'a> {}
524
- impl<'a> Future for LATimerBackoffFut<'a> {
525
- type Output = ActivityResolution;
526
-
527
- fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
528
- // If the timer exists, wait for it first
529
- if let Some(tf) = self.timer_fut.as_mut() {
530
- return match tf.poll_unpin(cx) {
531
- Poll::Ready(tr) => {
532
- self.timer_fut = None;
533
- // Schedule next LA if this timer wasn't cancelled
534
- if let TimerResult::Fired = tr {
535
- let mut opts = self.la_opts.clone();
536
- opts.attempt = Some(self.next_attempt);
537
- opts.original_schedule_time = self.next_sched_time.clone();
538
- self.current_fut = Box::pin(self.ctx.local_activity_no_timer_retry(opts));
539
- Poll::Pending
540
- } else {
541
- Poll::Ready(ActivityResolution {
542
- status: Some(
543
- activity_resolution::Status::Cancelled(Default::default()),
544
- ),
545
- })
546
- }
547
- }
548
- Poll::Pending => Poll::Pending,
549
- };
550
- }
551
- let poll_res = self.current_fut.poll_unpin(cx);
552
- if let Poll::Ready(ref r) = poll_res {
553
- // If we've already said we want to cancel, don't schedule the backoff timer. Just
554
- // return cancel status. This can happen if cancel comes after the LA says it wants to
555
- // back off but before we have scheduled the timer.
556
- if self.did_cancel.load(Ordering::Acquire) {
557
- return Poll::Ready(ActivityResolution {
558
- status: Some(activity_resolution::Status::Cancelled(Default::default())),
559
- });
560
- }
561
-
562
- if let Some(activity_resolution::Status::Backoff(b)) = r.status.as_ref() {
563
- let timer_f = self.ctx.timer(
564
- b.backoff_duration
565
- .clone()
566
- .expect("Duration is set")
567
- .try_into()
568
- .expect("duration converts ok"),
569
- );
570
- self.timer_fut = Some(Box::pin(timer_f));
571
- self.next_attempt = b.attempt;
572
- self.next_sched_time = b.original_schedule_time.clone();
573
- return Poll::Pending;
574
- }
575
- }
576
- poll_res
577
- }
578
- }
579
- impl<'a> CancellableFuture<ActivityResolution> for LATimerBackoffFut<'a> {
580
- fn cancel(&self, ctx: &WfContext) {
581
- self.did_cancel.store(true, Ordering::Release);
582
- if let Some(tf) = self.timer_fut.as_ref() {
583
- tf.cancel(ctx);
584
- }
585
- self.current_fut.cancel(ctx);
586
- }
587
- }
588
-
589
- /// A stub representing an unstarted child workflow.
590
- #[derive(Default, Debug, Clone)]
591
- pub struct ChildWorkflow {
592
- opts: ChildWorkflowOptions,
593
- }
594
-
595
- pub struct ChildWfCommon {
596
- workflow_id: String,
597
- result_future: CancellableWFCommandFut<ChildWorkflowResult, ()>,
598
- }
599
-
600
- pub struct PendingChildWorkflow {
601
- pub status: ChildWorkflowStartStatus,
602
- pub common: ChildWfCommon,
603
- }
604
-
605
- impl PendingChildWorkflow {
606
- /// Returns `None` if the child did not start successfully. The returned [StartedChildWorkflow]
607
- /// can be used to wait on, signal, or cancel the child workflow.
608
- pub fn into_started(self) -> Option<StartedChildWorkflow> {
609
- match self.status {
610
- ChildWorkflowStartStatus::Succeeded(s) => Some(StartedChildWorkflow {
611
- run_id: s.run_id,
612
- common: self.common,
613
- }),
614
- _ => None,
615
- }
616
- }
617
- }
618
-
619
- pub struct StartedChildWorkflow {
620
- pub run_id: String,
621
- common: ChildWfCommon,
622
- }
623
-
624
- impl ChildWorkflow {
625
- /// Start the child workflow, the returned Future is cancellable.
626
- pub fn start(self, cx: &WfContext) -> impl CancellableFuture<PendingChildWorkflow> {
627
- let child_seq = cx.seq_nums.write().next_child_workflow_seq();
628
- // Immediately create the command/future for the result, otherwise if the user does
629
- // not await the result until *after* we receive an activation for it, there will be nothing
630
- // to match when unblocking.
631
- let cancel_seq = cx.seq_nums.write().next_cancel_external_wf_seq();
632
- let (result_cmd, unblocker) =
633
- CancellableWFCommandFut::new(CancellableID::ExternalWorkflow {
634
- seqnum: cancel_seq,
635
- execution: NamespacedWorkflowExecution {
636
- workflow_id: self.opts.workflow_id.clone(),
637
- ..Default::default()
638
- },
639
- only_child: true,
640
- });
641
- cx.send(
642
- CommandSubscribeChildWorkflowCompletion {
643
- seq: child_seq,
644
- unblocker,
645
- }
646
- .into(),
647
- );
648
-
649
- let common = ChildWfCommon {
650
- workflow_id: self.opts.workflow_id.clone(),
651
- result_future: result_cmd,
652
- };
653
-
654
- let (cmd, unblocker) =
655
- CancellableWFCommandFut::new_with_dat(CancellableID::ChildWorkflow(child_seq), common);
656
- cx.send(
657
- CommandCreateRequest {
658
- cmd: self.opts.into_command(child_seq).into(),
659
- unblocker,
660
- }
661
- .into(),
662
- );
663
-
664
- cmd
665
- }
666
- }
667
-
668
- impl StartedChildWorkflow {
669
- /// Consumes self and returns a future that will wait until completion of this child workflow
670
- /// execution
671
- pub fn result(self) -> impl CancellableFuture<ChildWorkflowResult> {
672
- self.common.result_future
673
- }
674
-
675
- /// Cancel the child workflow
676
- pub fn cancel(&self, cx: &WfContext) -> impl Future<Output = CancelExternalWfResult> {
677
- let target = NamespacedWorkflowExecution {
678
- namespace: cx.namespace().to_string(),
679
- workflow_id: self.common.workflow_id.clone(),
680
- ..Default::default()
681
- };
682
- cx.cancel_external(target)
683
- }
684
-
685
- /// Signal the child workflow
686
- pub fn signal(
687
- &self,
688
- cx: &WfContext,
689
- data: impl Into<Signal>,
690
- ) -> impl CancellableFuture<SignalExternalWfResult> {
691
- let target = sig_we::Target::ChildWorkflowId(self.common.workflow_id.clone());
692
- cx.send_signal_wf(target, data.into())
693
- }
694
- }