temporalio 0.1.1 → 0.3.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. 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
- }