temporalio 0.0.1

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 (317) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE +20 -0
  4. data/README.md +130 -0
  5. data/bridge/Cargo.lock +2865 -0
  6. data/bridge/Cargo.toml +26 -0
  7. data/bridge/sdk-core/ARCHITECTURE.md +76 -0
  8. data/bridge/sdk-core/Cargo.lock +2606 -0
  9. data/bridge/sdk-core/Cargo.toml +2 -0
  10. data/bridge/sdk-core/LICENSE.txt +23 -0
  11. data/bridge/sdk-core/README.md +107 -0
  12. data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
  13. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
  14. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
  15. data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
  16. data/bridge/sdk-core/bridge-ffi/Cargo.toml +24 -0
  17. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +23 -0
  18. data/bridge/sdk-core/bridge-ffi/build.rs +25 -0
  19. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +249 -0
  20. data/bridge/sdk-core/bridge-ffi/src/lib.rs +825 -0
  21. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +211 -0
  22. data/bridge/sdk-core/client/Cargo.toml +40 -0
  23. data/bridge/sdk-core/client/LICENSE.txt +23 -0
  24. data/bridge/sdk-core/client/src/lib.rs +1294 -0
  25. data/bridge/sdk-core/client/src/metrics.rs +165 -0
  26. data/bridge/sdk-core/client/src/raw.rs +931 -0
  27. data/bridge/sdk-core/client/src/retry.rs +674 -0
  28. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
  29. data/bridge/sdk-core/core/Cargo.toml +116 -0
  30. data/bridge/sdk-core/core/LICENSE.txt +23 -0
  31. data/bridge/sdk-core/core/benches/workflow_replay.rs +73 -0
  32. data/bridge/sdk-core/core/src/abstractions.rs +166 -0
  33. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +911 -0
  34. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
  35. data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
  36. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +515 -0
  37. data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
  38. data/bridge/sdk-core/core/src/core_tests/queries.rs +736 -0
  39. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
  40. data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
  41. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
  42. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2070 -0
  43. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
  44. data/bridge/sdk-core/core/src/lib.rs +175 -0
  45. data/bridge/sdk-core/core/src/log_export.rs +62 -0
  46. data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
  47. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
  48. data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
  49. data/bridge/sdk-core/core/src/replay/mod.rs +71 -0
  50. data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
  51. data/bridge/sdk-core/core/src/telemetry/metrics.rs +383 -0
  52. data/bridge/sdk-core/core/src/telemetry/mod.rs +412 -0
  53. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +77 -0
  54. data/bridge/sdk-core/core/src/test_help/mod.rs +875 -0
  55. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
  56. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1042 -0
  57. data/bridge/sdk-core/core/src/worker/activities.rs +464 -0
  58. data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
  59. data/bridge/sdk-core/core/src/worker/client.rs +347 -0
  60. data/bridge/sdk-core/core/src/worker/mod.rs +566 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +110 -0
  63. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +458 -0
  64. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +911 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +298 -0
  66. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +171 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +860 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +140 -0
  69. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +161 -0
  70. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +133 -0
  71. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1448 -0
  72. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +342 -0
  73. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +127 -0
  74. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +712 -0
  75. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +71 -0
  76. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +443 -0
  77. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +439 -0
  78. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +169 -0
  79. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +246 -0
  80. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
  81. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1184 -0
  82. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +277 -0
  83. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
  84. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +647 -0
  85. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1143 -0
  86. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
  87. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
  88. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +940 -0
  89. data/bridge/sdk-core/core-api/Cargo.toml +31 -0
  90. data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
  91. data/bridge/sdk-core/core-api/src/errors.rs +95 -0
  92. data/bridge/sdk-core/core-api/src/lib.rs +151 -0
  93. data/bridge/sdk-core/core-api/src/worker.rs +135 -0
  94. data/bridge/sdk-core/etc/deps.svg +187 -0
  95. data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
  96. data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
  97. data/bridge/sdk-core/etc/prometheus.yaml +6 -0
  98. data/bridge/sdk-core/fsm/Cargo.toml +18 -0
  99. data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
  100. data/bridge/sdk-core/fsm/README.md +3 -0
  101. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
  102. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
  103. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
  104. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
  105. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
  106. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
  107. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
  108. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
  109. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
  110. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
  111. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
  112. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
  113. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
  114. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
  115. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
  116. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
  117. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
  118. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
  119. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  120. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
  121. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  122. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
  123. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
  124. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
  125. data/bridge/sdk-core/fsm/src/lib.rs +2 -0
  126. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  127. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  128. data/bridge/sdk-core/integ-with-otel.sh +7 -0
  129. data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
  130. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
  131. data/bridge/sdk-core/protos/api_upstream/buf.yaml +12 -0
  132. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
  133. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +86 -0
  134. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +83 -0
  135. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +259 -0
  136. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
  137. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +46 -0
  138. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/cluster.proto +40 -0
  139. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
  140. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +55 -0
  141. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +168 -0
  142. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +97 -0
  143. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
  144. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
  145. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
  146. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
  147. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
  148. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +51 -0
  149. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
  150. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
  151. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
  152. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
  153. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +751 -0
  154. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
  155. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +161 -0
  156. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +99 -0
  157. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
  158. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
  159. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +300 -0
  160. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
  161. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +46 -0
  162. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
  163. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +145 -0
  164. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1124 -0
  165. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +401 -0
  166. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
  167. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  168. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
  169. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +210 -0
  170. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
  171. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
  172. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
  173. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  174. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +261 -0
  175. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +297 -0
  176. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
  177. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
  178. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
  179. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
  180. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
  181. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
  182. data/bridge/sdk-core/rustfmt.toml +1 -0
  183. data/bridge/sdk-core/sdk/Cargo.toml +47 -0
  184. data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
  185. data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
  186. data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
  187. data/bridge/sdk-core/sdk/src/conversions.rs +8 -0
  188. data/bridge/sdk-core/sdk/src/interceptors.rs +17 -0
  189. data/bridge/sdk-core/sdk/src/lib.rs +792 -0
  190. data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
  191. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
  192. data/bridge/sdk-core/sdk/src/workflow_context.rs +683 -0
  193. data/bridge/sdk-core/sdk/src/workflow_future.rs +503 -0
  194. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
  195. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
  196. data/bridge/sdk-core/sdk-core-protos/build.rs +108 -0
  197. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  198. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +497 -0
  199. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
  200. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1910 -0
  201. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  202. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  203. data/bridge/sdk-core/test-utils/Cargo.toml +35 -0
  204. data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
  205. data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
  206. data/bridge/sdk-core/test-utils/src/lib.rs +598 -0
  207. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
  208. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
  209. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +218 -0
  210. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +146 -0
  211. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
  212. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
  213. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
  214. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
  215. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
  216. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
  217. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
  218. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
  219. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
  220. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +634 -0
  221. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
  222. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +137 -0
  223. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
  224. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
  225. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
  226. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
  227. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
  228. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +587 -0
  229. data/bridge/sdk-core/tests/load_tests.rs +191 -0
  230. data/bridge/sdk-core/tests/main.rs +111 -0
  231. data/bridge/sdk-core/tests/runner.rs +93 -0
  232. data/bridge/src/connection.rs +167 -0
  233. data/bridge/src/lib.rs +180 -0
  234. data/bridge/src/runtime.rs +47 -0
  235. data/bridge/src/worker.rs +73 -0
  236. data/ext/Rakefile +9 -0
  237. data/lib/bridge.so +0 -0
  238. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
  239. data/lib/gen/temporal/api/batch/v1/message_pb.rb +48 -0
  240. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +67 -0
  241. data/lib/gen/temporal/api/command/v1/message_pb.rb +166 -0
  242. data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
  243. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +32 -0
  244. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +26 -0
  245. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +37 -0
  246. data/lib/gen/temporal/api/enums/v1/common_pb.rb +41 -0
  247. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +67 -0
  248. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +71 -0
  249. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
  250. data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
  251. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
  252. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
  253. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
  254. data/lib/gen/temporal/api/enums/v1/update_pb.rb +28 -0
  255. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
  256. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
  257. data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
  258. data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
  259. data/lib/gen/temporal/api/history/v1/message_pb.rb +489 -0
  260. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
  261. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +125 -0
  262. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
  263. data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
  264. data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
  265. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +128 -0
  266. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
  267. data/lib/gen/temporal/api/update/v1/message_pb.rb +26 -0
  268. data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
  269. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +110 -0
  270. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +771 -0
  271. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
  272. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
  273. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
  274. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
  275. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
  276. data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
  277. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
  278. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
  279. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +164 -0
  280. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +192 -0
  281. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
  282. data/lib/temporal/bridge.rb +14 -0
  283. data/lib/temporal/client/implementation.rb +339 -0
  284. data/lib/temporal/client/workflow_handle.rb +243 -0
  285. data/lib/temporal/client.rb +144 -0
  286. data/lib/temporal/connection.rb +736 -0
  287. data/lib/temporal/data_converter.rb +150 -0
  288. data/lib/temporal/error/failure.rb +194 -0
  289. data/lib/temporal/error/workflow_failure.rb +17 -0
  290. data/lib/temporal/errors.rb +22 -0
  291. data/lib/temporal/failure_converter/base.rb +26 -0
  292. data/lib/temporal/failure_converter/basic.rb +313 -0
  293. data/lib/temporal/failure_converter.rb +8 -0
  294. data/lib/temporal/interceptor/chain.rb +27 -0
  295. data/lib/temporal/interceptor/client.rb +102 -0
  296. data/lib/temporal/payload_codec/base.rb +32 -0
  297. data/lib/temporal/payload_converter/base.rb +24 -0
  298. data/lib/temporal/payload_converter/bytes.rb +26 -0
  299. data/lib/temporal/payload_converter/composite.rb +47 -0
  300. data/lib/temporal/payload_converter/encoding_base.rb +35 -0
  301. data/lib/temporal/payload_converter/json.rb +25 -0
  302. data/lib/temporal/payload_converter/nil.rb +25 -0
  303. data/lib/temporal/payload_converter.rb +14 -0
  304. data/lib/temporal/retry_policy.rb +82 -0
  305. data/lib/temporal/retry_state.rb +35 -0
  306. data/lib/temporal/runtime.rb +22 -0
  307. data/lib/temporal/timeout_type.rb +29 -0
  308. data/lib/temporal/version.rb +3 -0
  309. data/lib/temporal/workflow/execution_info.rb +54 -0
  310. data/lib/temporal/workflow/execution_status.rb +36 -0
  311. data/lib/temporal/workflow/id_reuse_policy.rb +36 -0
  312. data/lib/temporal/workflow/query_reject_condition.rb +33 -0
  313. data/lib/temporal.rb +8 -0
  314. data/lib/temporalio.rb +3 -0
  315. data/lib/thermite_patch.rb +23 -0
  316. data/temporalio.gemspec +41 -0
  317. metadata +583 -0
@@ -0,0 +1,41 @@
1
+ #![allow(dead_code)]
2
+
3
+ extern crate rustfsm_trait as rustfsm;
4
+
5
+ use rustfsm_procmacro::fsm;
6
+ use rustfsm_trait::TransitionResult;
7
+ use std::convert::Infallible;
8
+
9
+ fsm! {
10
+ name SimpleMachine; command SimpleMachineCommand; error Infallible;
11
+
12
+ One --(A(String), foo)--> Two;
13
+ One --(A(String), foo)--> Three;
14
+
15
+ Two --(B(String), bar)--> One;
16
+ Two --(B(String), bar)--> Two;
17
+ Two --(B(String), bar)--> Three;
18
+ }
19
+
20
+ #[derive(Default, Clone)]
21
+ pub struct One {}
22
+ impl One {
23
+ fn foo(self, _: String) -> SimpleMachineTransition<TwoOrThree> {
24
+ TransitionResult::ok(vec![], Two {}.into())
25
+ }
26
+ }
27
+
28
+ #[derive(Default, Clone)]
29
+ pub struct Two {}
30
+ impl Two {
31
+ fn bar(self, _: String) -> SimpleMachineTransition<OneOrTwoOrThree> {
32
+ TransitionResult::ok(vec![], Three {}.into())
33
+ }
34
+ }
35
+
36
+ #[derive(Default, Clone)]
37
+ pub struct Three {}
38
+
39
+ pub enum SimpleMachineCommand {}
40
+
41
+ fn main() {}
@@ -0,0 +1,14 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+
5
+ fsm! {
6
+ One --(A)--> Two
7
+ }
8
+
9
+ #[derive(Default, Clone)]
10
+ pub struct One {}
11
+ #[derive(Default, Clone)]
12
+ pub struct Two {}
13
+
14
+ fn main() {}
@@ -0,0 +1,11 @@
1
+ error: expected `name`
2
+ --> $DIR/forgot_name_fail.rs:6:5
3
+ |
4
+ 6 | One --(A)--> Two
5
+ | ^^^
6
+
7
+ error: The fsm definition should begin with `name MachineName; command CommandType; error ErrorType;` optionally followed by `shared_state SharedStateType;`
8
+ --> $DIR/forgot_name_fail.rs:6:5
9
+ |
10
+ 6 | One --(A)--> Two
11
+ | ^^^
@@ -0,0 +1,32 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+ use rustfsm_trait::TransitionResult;
5
+ use std::convert::Infallible;
6
+
7
+ fsm! {
8
+ name Simple; command SimpleCommand; error Infallible;
9
+
10
+ One --(A(String), on_a)--> Two
11
+ }
12
+
13
+ #[derive(Default, Clone)]
14
+ pub struct One {}
15
+ impl One {
16
+ fn on_a(self, _: String) -> SimpleTransition<Two> {
17
+ SimpleTransition::ok(vec![], Two {})
18
+ }
19
+ }
20
+
21
+ #[derive(Default, Clone)]
22
+ pub struct Two {}
23
+
24
+ pub enum SimpleCommand {}
25
+
26
+ fn main() {
27
+ // state enum exists with both states
28
+ let _ = SimpleState::One(One {});
29
+ let _ = SimpleState::Two(Two {});
30
+ // Avoid dead code warning
31
+ let _ = SimpleEvents::A("yo".to_owned());
32
+ }
@@ -0,0 +1,31 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+ use rustfsm_trait::TransitionResult;
5
+ use std::convert::Infallible;
6
+
7
+ fsm! {
8
+ name Simple; command SimpleCommand; error Infallible;
9
+
10
+ One --(A, on_a)--> Two
11
+ }
12
+
13
+ #[derive(Default, Clone)]
14
+ pub struct One {}
15
+ impl One {
16
+ fn on_a(self) -> SimpleTransition<Two> {
17
+ SimpleTransition::ok(vec![], Two {})
18
+ }
19
+ }
20
+
21
+ #[derive(Default, Clone)]
22
+ pub struct Two {}
23
+
24
+ pub enum SimpleCommand {}
25
+
26
+ fn main() {
27
+ // state enum exists with both states
28
+ let _ = SimpleState::One(One {});
29
+ let _ = SimpleState::Two(Two {});
30
+ let _ = SimpleEvents::A;
31
+ }
@@ -0,0 +1,46 @@
1
+ #![allow(dead_code)]
2
+
3
+ extern crate rustfsm_trait as rustfsm;
4
+
5
+ use rustfsm_procmacro::fsm;
6
+ use rustfsm_trait::TransitionResult;
7
+ use std::convert::Infallible;
8
+
9
+ fsm! {
10
+ name SimpleMachine; command SimpleMachineCommand; error Infallible;
11
+
12
+ One --(A(String), foo)--> Two;
13
+ One --(B)--> Two;
14
+ Two --(B)--> One;
15
+ Two --(C, baz)--> One
16
+ }
17
+
18
+ #[derive(Default, Clone)]
19
+ pub struct One {}
20
+ impl One {
21
+ fn foo(self, _: String) -> SimpleMachineTransition<Two> {
22
+ TransitionResult::default()
23
+ }
24
+ }
25
+ impl From<Two> for One {
26
+ fn from(_: Two) -> Self {
27
+ One {}
28
+ }
29
+ }
30
+
31
+ #[derive(Default, Clone)]
32
+ pub struct Two {}
33
+ impl Two {
34
+ fn baz(self) -> SimpleMachineTransition<One> {
35
+ TransitionResult::default()
36
+ }
37
+ }
38
+ impl From<One> for Two {
39
+ fn from(_: One) -> Self {
40
+ Two {}
41
+ }
42
+ }
43
+
44
+ pub enum SimpleMachineCommand {}
45
+
46
+ fn main() {}
@@ -0,0 +1,29 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+ use rustfsm_trait::TransitionResult;
5
+ use std::convert::Infallible;
6
+
7
+ fsm! {
8
+ name SimpleMachine; command SimpleMachineCommand; error Infallible;
9
+
10
+ One --(A)--> Two;
11
+ Two --(B)--> One;
12
+ }
13
+
14
+ #[derive(Default, Clone)]
15
+ pub struct One {}
16
+
17
+ #[derive(Default, Clone)]
18
+ pub struct Two {}
19
+ // We implement one of them because trait bound satisfaction error output is not deterministically
20
+ // ordered
21
+ impl From<One> for Two {
22
+ fn from(_: One) -> Self {
23
+ Two {}
24
+ }
25
+ }
26
+
27
+ enum SimpleMachineCommand {}
28
+
29
+ fn main() {}
@@ -0,0 +1,12 @@
1
+ error[E0277]: the trait bound `One: From<Two>` is not satisfied
2
+ --> tests/trybuild/no_handle_conversions_require_into_fail.rs:11:18
3
+ |
4
+ 11 | Two --(B)--> One;
5
+ | ^^^ the trait `From<Two>` is not implemented for `One`
6
+ |
7
+ = note: required because of the requirements on the impl of `Into<One>` for `Two`
8
+ note: required by a bound in `TransitionResult::<Sm, Ds>::from`
9
+ --> $WORKSPACE/fsm/rustfsm_trait/src/lib.rs
10
+ |
11
+ | CurrentState: Into<Ds>,
12
+ | ^^^^^^^^ required by this bound in `TransitionResult::<Sm, Ds>::from`
@@ -0,0 +1,32 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+ use rustfsm_trait::TransitionResult;
5
+ use std::convert::Infallible;
6
+
7
+ fsm! {
8
+ name SimpleMachine; command SimpleMachineCommand; error Infallible;
9
+
10
+ One --(A)--> Two
11
+ }
12
+
13
+ #[derive(Default, Clone)]
14
+ pub struct One {}
15
+
16
+ #[derive(Default, Clone)]
17
+ pub struct Two {}
18
+ impl From<One> for Two {
19
+ fn from(_: One) -> Self {
20
+ Two {}
21
+ }
22
+ }
23
+
24
+ pub enum SimpleMachineCommand {}
25
+
26
+ fn main() {
27
+ // state enum exists with both states
28
+ let _ = SimpleMachineState::One(One {});
29
+ let _ = SimpleMachineState::Two(Two {});
30
+ // Event enum exists
31
+ let _ = SimpleMachineEvents::A;
32
+ }
@@ -0,0 +1,18 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+
5
+ fsm! {
6
+ name Simple; command SimpleCommand; error Infallible;
7
+
8
+ One --(A{foo: String}, on_a)--> Two
9
+ }
10
+
11
+ #[derive(Default, Clone)]
12
+ pub struct One {}
13
+ #[derive(Default, Clone)]
14
+ pub struct Two {}
15
+
16
+ pub enum SimpleCommand {}
17
+
18
+ fn main() {}
@@ -0,0 +1,5 @@
1
+ error: Struct variants are not supported for events
2
+ --> $DIR/struct_event_variant_fail.rs:8:12
3
+ |
4
+ 8 | One --(A{foo: String}, on_a)--> Two
5
+ | ^
@@ -0,0 +1,11 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+
5
+ fsm! {
6
+ name Simple; command SimpleCmd; error Infallible;
7
+
8
+ One --(A(Foo, Bar), on_a)--> Two
9
+ }
10
+
11
+ fn main() {}
@@ -0,0 +1,5 @@
1
+ error: Only tuple variants with exactly one item are supported for events
2
+ --> $DIR/tuple_more_item_event_variant_fail.rs:8:12
3
+ |
4
+ 8 | One --(A(Foo, Bar), on_a)--> Two
5
+ | ^
@@ -0,0 +1,11 @@
1
+ extern crate rustfsm_trait as rustfsm;
2
+
3
+ use rustfsm_procmacro::fsm;
4
+
5
+ fsm! {
6
+ name Simple; command SimpleCmd; error Infallible;
7
+
8
+ One --(A(), on_a)--> Two
9
+ }
10
+
11
+ fn main() {}
@@ -0,0 +1,5 @@
1
+ error: Only tuple variants with exactly one item are supported for events
2
+ --> $DIR/tuple_zero_item_event_variant_fail.rs:8:12
3
+ |
4
+ 8 | One --(A(), on_a)--> Two
5
+ | ^
@@ -0,0 +1,14 @@
1
+ [package]
2
+ name = "rustfsm_trait"
3
+ version = "0.1.0"
4
+ authors = ["Spencer Judge <spencer@temporal.io>"]
5
+ edition = "2021"
6
+ license-file = "LICENSE.txt"
7
+ description = "Trait sub-crate of the `rustfsm` crate"
8
+
9
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
10
+
11
+ [dependencies]
12
+
13
+ [package.metadata.workspaces]
14
+ independent = true
@@ -0,0 +1,23 @@
1
+ Temporal Core SDK
2
+
3
+ The MIT License
4
+
5
+ Copyright (c) 2021 Temporal Technologies, Inc. All Rights Reserved
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
@@ -0,0 +1,249 @@
1
+ use std::{
2
+ error::Error,
3
+ fmt::{Debug, Display, Formatter},
4
+ };
5
+
6
+ /// This trait defines a state machine (more formally, a [finite state
7
+ /// transducer](https://en.wikipedia.org/wiki/Finite-state_transducer)) which accepts events (the
8
+ /// input alphabet), uses them to mutate itself, and (may) output some commands (the output
9
+ /// alphabet) as a result.
10
+ pub trait StateMachine: Sized {
11
+ /// The error type produced by this state machine when handling events
12
+ type Error: Error;
13
+ /// The type used to represent different machine states. Should be an enum.
14
+ type State;
15
+ /// The type used to represent state that common among all states. Should be a struct.
16
+ type SharedState;
17
+ /// The type used to represent events the machine handles. Should be an enum.
18
+ type Event;
19
+ /// The type used to represent commands the machine issues upon transitions.
20
+ type Command;
21
+
22
+ /// Handle an incoming event, returning a transition result which represents updates to apply
23
+ /// to the state machine.
24
+ fn on_event(self, event: Self::Event) -> TransitionResult<Self, Self::State>;
25
+
26
+ /// Handle an incoming event and mutate the state machine to update to the new state and apply
27
+ /// any changes to shared state.
28
+ ///
29
+ /// Returns the commands issued by the transition on success, otherwise a [MachineError]
30
+ fn on_event_mut(
31
+ &mut self,
32
+ event: Self::Event,
33
+ ) -> Result<Vec<Self::Command>, MachineError<Self::Error>>
34
+ where
35
+ Self: Clone,
36
+ {
37
+ // NOTE: This clone is actually nice in some sense, giving us a kind of transactionality.
38
+ // However if there are really big things in state it could be an issue.
39
+ let res = self.clone().on_event(event);
40
+ match res {
41
+ TransitionResult::Ok {
42
+ commands,
43
+ new_state,
44
+ shared_state,
45
+ } => {
46
+ *self = Self::from_parts(shared_state, new_state);
47
+ Ok(commands)
48
+ }
49
+ TransitionResult::OkNoShare {
50
+ commands,
51
+ new_state,
52
+ } => {
53
+ self.set_state(new_state);
54
+ Ok(commands)
55
+ }
56
+ TransitionResult::InvalidTransition => Err(MachineError::InvalidTransition),
57
+ TransitionResult::Err(e) => Err(MachineError::Underlying(e)),
58
+ }
59
+ }
60
+
61
+ fn name(&self) -> &str;
62
+
63
+ /// Returns the current state of the machine
64
+ fn state(&self) -> &Self::State;
65
+ fn set_state(&mut self, new_state: Self::State);
66
+
67
+ /// Returns the current shared state of the machine
68
+ fn shared_state(&self) -> &Self::SharedState;
69
+
70
+ /// Returns true if the machine's current state is a final one
71
+ fn has_reached_final_state(&self) -> bool;
72
+
73
+ /// Given the shared data and new state, create a new instance.
74
+ fn from_parts(shared: Self::SharedState, state: Self::State) -> Self;
75
+
76
+ /// Return a PlantUML definition of the fsm that can be used to visualize it
77
+ fn visualizer() -> &'static str;
78
+ }
79
+
80
+ /// The error returned by [StateMachine]s when handling events
81
+ #[derive(Debug)]
82
+ pub enum MachineError<E: Error> {
83
+ /// An undefined transition was attempted
84
+ InvalidTransition,
85
+ /// Some error occurred while processing the transition
86
+ Underlying(E),
87
+ }
88
+
89
+ impl<E: Error> From<E> for MachineError<E> {
90
+ fn from(e: E) -> Self {
91
+ Self::Underlying(e)
92
+ }
93
+ }
94
+
95
+ impl<E: Error> Display for MachineError<E> {
96
+ fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
97
+ match self {
98
+ MachineError::InvalidTransition => f.write_str("Invalid transition"),
99
+ MachineError::Underlying(e) => Display::fmt(&e, f),
100
+ }
101
+ }
102
+ }
103
+ impl<E: Error> Error for MachineError<E> {}
104
+
105
+ pub enum MachineUpdate<Machine>
106
+ where
107
+ Machine: StateMachine,
108
+ {
109
+ InvalidTransition,
110
+ Ok { commands: Vec<Machine::Command> },
111
+ }
112
+
113
+ impl<M> MachineUpdate<M>
114
+ where
115
+ M: StateMachine,
116
+ {
117
+ /// Unwraps the machine update, panicking if the transition was invalid.
118
+ pub fn unwrap(self) -> Vec<M::Command> {
119
+ match self {
120
+ Self::Ok { commands } => commands,
121
+ Self::InvalidTransition => panic!("Transition was not successful!"),
122
+ }
123
+ }
124
+ }
125
+
126
+ /// A transition result is emitted every time the [StateMachine] handles an event.
127
+ pub enum TransitionResult<Machine, DestinationState>
128
+ where
129
+ Machine: StateMachine,
130
+ DestinationState: Into<Machine::State>,
131
+ {
132
+ /// This state does not define a transition for this event from this state. All other errors
133
+ /// should use the [Err](enum.TransitionResult.html#variant.Err) variant.
134
+ InvalidTransition,
135
+ /// The transition was successful
136
+ Ok {
137
+ commands: Vec<Machine::Command>,
138
+ new_state: DestinationState,
139
+ shared_state: Machine::SharedState,
140
+ },
141
+ /// The transition was successful with no shared state change
142
+ OkNoShare {
143
+ commands: Vec<Machine::Command>,
144
+ new_state: DestinationState,
145
+ },
146
+ /// There was some error performing the transition
147
+ Err(Machine::Error),
148
+ }
149
+
150
+ impl<Sm, Ds> TransitionResult<Sm, Ds>
151
+ where
152
+ Sm: StateMachine,
153
+ Ds: Into<Sm::State>,
154
+ {
155
+ /// Produce a transition with the provided commands to the provided state. No changes to shared
156
+ /// state if it exists
157
+ pub fn ok<CI>(commands: CI, new_state: Ds) -> Self
158
+ where
159
+ CI: IntoIterator<Item = Sm::Command>,
160
+ {
161
+ Self::OkNoShare {
162
+ commands: commands.into_iter().collect(),
163
+ new_state,
164
+ }
165
+ }
166
+
167
+ /// Produce a transition with the provided commands to the provided state with shared state
168
+ /// changes
169
+ pub fn ok_shared<CI, SS>(commands: CI, new_state: Ds, new_shared: SS) -> Self
170
+ where
171
+ CI: IntoIterator<Item = Sm::Command>,
172
+ SS: Into<Sm::SharedState>,
173
+ {
174
+ Self::Ok {
175
+ commands: commands.into_iter().collect(),
176
+ new_state,
177
+ shared_state: new_shared.into(),
178
+ }
179
+ }
180
+
181
+ /// Uses `Into` to produce a transition with no commands from the provided current state to
182
+ /// the provided (by type parameter) destination state.
183
+ pub fn from<CurrentState>(current_state: CurrentState) -> Self
184
+ where
185
+ CurrentState: Into<Ds>,
186
+ {
187
+ let as_dest: Ds = current_state.into();
188
+ Self::OkNoShare {
189
+ commands: vec![],
190
+ new_state: as_dest,
191
+ }
192
+ }
193
+ }
194
+
195
+ impl<Sm, Ds> TransitionResult<Sm, Ds>
196
+ where
197
+ Sm: StateMachine,
198
+ Ds: Into<Sm::State> + Default,
199
+ {
200
+ /// Produce a transition with commands relying on [Default] for the destination state's value
201
+ pub fn commands<CI>(commands: CI) -> Self
202
+ where
203
+ CI: IntoIterator<Item = Sm::Command>,
204
+ {
205
+ Self::OkNoShare {
206
+ commands: commands.into_iter().collect(),
207
+ new_state: Ds::default(),
208
+ }
209
+ }
210
+
211
+ /// Produce a transition with no commands relying on [Default] for the destination state's
212
+ /// value
213
+ pub fn default() -> Self {
214
+ Self::OkNoShare {
215
+ commands: vec![],
216
+ new_state: Ds::default(),
217
+ }
218
+ }
219
+ }
220
+
221
+ impl<Sm, Ds> TransitionResult<Sm, Ds>
222
+ where
223
+ Sm: StateMachine,
224
+ Ds: Into<Sm::State>,
225
+ {
226
+ /// Turns more-specific (struct) transition result into more-general (enum) transition result
227
+ pub fn into_general(self) -> TransitionResult<Sm, Sm::State> {
228
+ match self {
229
+ TransitionResult::InvalidTransition => TransitionResult::InvalidTransition,
230
+ TransitionResult::Ok {
231
+ commands,
232
+ new_state,
233
+ shared_state,
234
+ } => TransitionResult::Ok {
235
+ commands,
236
+ new_state: new_state.into(),
237
+ shared_state,
238
+ },
239
+ TransitionResult::OkNoShare {
240
+ commands,
241
+ new_state,
242
+ } => TransitionResult::OkNoShare {
243
+ commands,
244
+ new_state: new_state.into(),
245
+ },
246
+ TransitionResult::Err(e) => TransitionResult::Err(e),
247
+ }
248
+ }
249
+ }
@@ -0,0 +1,2 @@
1
+ pub use rustfsm_procmacro::fsm;
2
+ pub use rustfsm_trait::{MachineError, StateMachine, TransitionResult};
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Run integ tests with OTel collector export enabled
4
+ export TEMPORAL_INTEG_OTEL_URL="grpc://localhost:4317"
5
+ export TEMPORAL_TRACING_FILTER="temporal_sdk_core=DEBUG"
6
+
7
+ cargo integ-test "${@:1}"
@@ -0,0 +1,9 @@
1
+ # Temporal proto files
2
+
3
+ ## How to use
4
+
5
+ Install as git submodule to the project.
6
+
7
+ ## License
8
+
9
+ MIT License, please see [LICENSE](LICENSE) for details.
@@ -0,0 +1,40 @@
1
+ - included_paths:
2
+ - '**/*.proto'
3
+ disabled_rules:
4
+ - 'core::0192::has-comments'
5
+
6
+ - included_paths:
7
+ - '**/message.proto'
8
+ disabled_rules:
9
+ - 'core::0122::name-suffix'
10
+ - 'core::0123::resource-annotation'
11
+
12
+ - included_paths:
13
+ - '**/workflowservice/v1/request_response.proto'
14
+ - '**/operatorservice/v1/request_response.proto'
15
+ disabled_rules:
16
+ - 'core::0122::name-suffix'
17
+ - 'core::0131::request-name-required'
18
+ - 'core::0131::request-unknown-fields'
19
+ - 'core::0132::request-parent-required'
20
+ - 'core::0132::request-unknown-fields'
21
+ - 'core::0132::response-unknown-fields'
22
+ - 'core::0134::request-unknown-fields'
23
+ - 'core::0158::request-page-size-field'
24
+ - 'core::0158::request-page-token-field'
25
+ - 'core::0158::response-next-page-token-field'
26
+ - 'core::0158::response-plural-first-field'
27
+ - 'core::0158::response-repeated-first-field'
28
+
29
+ - included_paths:
30
+ - '**/workflowservice/v1/service.proto'
31
+ - '**/operatorservice/v1/service.proto'
32
+ disabled_rules:
33
+ - 'core::0127::http-annotation'
34
+ - 'core::0131::method-signature'
35
+ - 'core::0131::response-message-name'
36
+
37
+ - included_paths:
38
+ - 'dependencies/gogoproto/gogo.proto'
39
+ disabled_rules:
40
+ - 'all'