temporalio 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +130 -0
  3. data/bridge/Cargo.lock +2865 -0
  4. data/bridge/Cargo.toml +26 -0
  5. data/bridge/sdk-core/ARCHITECTURE.md +76 -0
  6. data/bridge/sdk-core/Cargo.lock +2606 -0
  7. data/bridge/sdk-core/Cargo.toml +2 -0
  8. data/bridge/sdk-core/LICENSE.txt +23 -0
  9. data/bridge/sdk-core/README.md +107 -0
  10. data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
  11. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
  12. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
  13. data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
  14. data/bridge/sdk-core/bridge-ffi/Cargo.toml +24 -0
  15. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +23 -0
  16. data/bridge/sdk-core/bridge-ffi/build.rs +25 -0
  17. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +249 -0
  18. data/bridge/sdk-core/bridge-ffi/src/lib.rs +825 -0
  19. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +211 -0
  20. data/bridge/sdk-core/client/Cargo.toml +40 -0
  21. data/bridge/sdk-core/client/LICENSE.txt +23 -0
  22. data/bridge/sdk-core/client/src/lib.rs +1294 -0
  23. data/bridge/sdk-core/client/src/metrics.rs +165 -0
  24. data/bridge/sdk-core/client/src/raw.rs +931 -0
  25. data/bridge/sdk-core/client/src/retry.rs +674 -0
  26. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
  27. data/bridge/sdk-core/core/Cargo.toml +116 -0
  28. data/bridge/sdk-core/core/LICENSE.txt +23 -0
  29. data/bridge/sdk-core/core/benches/workflow_replay.rs +73 -0
  30. data/bridge/sdk-core/core/src/abstractions.rs +166 -0
  31. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +911 -0
  32. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
  33. data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
  34. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +515 -0
  35. data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
  36. data/bridge/sdk-core/core/src/core_tests/queries.rs +736 -0
  37. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
  38. data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
  39. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
  40. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2070 -0
  41. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
  42. data/bridge/sdk-core/core/src/lib.rs +175 -0
  43. data/bridge/sdk-core/core/src/log_export.rs +62 -0
  44. data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
  45. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
  46. data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
  47. data/bridge/sdk-core/core/src/replay/mod.rs +71 -0
  48. data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
  49. data/bridge/sdk-core/core/src/telemetry/metrics.rs +383 -0
  50. data/bridge/sdk-core/core/src/telemetry/mod.rs +412 -0
  51. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +77 -0
  52. data/bridge/sdk-core/core/src/test_help/mod.rs +875 -0
  53. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
  54. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1042 -0
  55. data/bridge/sdk-core/core/src/worker/activities.rs +464 -0
  56. data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
  57. data/bridge/sdk-core/core/src/worker/client.rs +347 -0
  58. data/bridge/sdk-core/core/src/worker/mod.rs +566 -0
  59. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
  60. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +110 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +458 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +911 -0
  63. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +298 -0
  64. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +171 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +860 -0
  66. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +140 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +161 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +133 -0
  69. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1448 -0
  70. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +342 -0
  71. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +127 -0
  72. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +712 -0
  73. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +71 -0
  74. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +443 -0
  75. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +439 -0
  76. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +169 -0
  77. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +246 -0
  78. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
  79. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1184 -0
  80. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +277 -0
  81. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
  82. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +647 -0
  83. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1143 -0
  84. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
  85. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
  86. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +940 -0
  87. data/bridge/sdk-core/core-api/Cargo.toml +31 -0
  88. data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
  89. data/bridge/sdk-core/core-api/src/errors.rs +95 -0
  90. data/bridge/sdk-core/core-api/src/lib.rs +151 -0
  91. data/bridge/sdk-core/core-api/src/worker.rs +135 -0
  92. data/bridge/sdk-core/etc/deps.svg +187 -0
  93. data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
  94. data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
  95. data/bridge/sdk-core/etc/prometheus.yaml +6 -0
  96. data/bridge/sdk-core/fsm/Cargo.toml +18 -0
  97. data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
  98. data/bridge/sdk-core/fsm/README.md +3 -0
  99. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
  100. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
  101. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
  102. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
  103. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
  104. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
  105. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
  106. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
  107. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
  108. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
  109. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
  110. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
  111. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
  112. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
  113. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
  114. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
  115. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
  116. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
  117. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
  118. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
  119. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
  120. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
  121. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
  122. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
  123. data/bridge/sdk-core/fsm/src/lib.rs +2 -0
  124. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  125. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  126. data/bridge/sdk-core/integ-with-otel.sh +7 -0
  127. data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
  128. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
  129. data/bridge/sdk-core/protos/api_upstream/buf.yaml +12 -0
  130. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
  131. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +86 -0
  132. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +83 -0
  133. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +259 -0
  134. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
  135. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +46 -0
  136. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/cluster.proto +40 -0
  137. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
  138. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +55 -0
  139. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +168 -0
  140. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +97 -0
  141. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
  142. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
  143. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
  144. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
  145. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
  146. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +51 -0
  147. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
  148. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
  149. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
  150. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
  151. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +751 -0
  152. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
  153. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +161 -0
  154. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +99 -0
  155. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
  156. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
  157. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +300 -0
  158. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
  159. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +46 -0
  160. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
  161. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +145 -0
  162. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1124 -0
  163. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +401 -0
  164. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
  165. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  166. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
  167. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +210 -0
  168. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
  169. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
  170. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
  171. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  172. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +261 -0
  173. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +297 -0
  174. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
  175. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
  176. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
  177. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
  178. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
  179. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
  180. data/bridge/sdk-core/rustfmt.toml +1 -0
  181. data/bridge/sdk-core/sdk/Cargo.toml +47 -0
  182. data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
  183. data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
  184. data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
  185. data/bridge/sdk-core/sdk/src/conversions.rs +8 -0
  186. data/bridge/sdk-core/sdk/src/interceptors.rs +17 -0
  187. data/bridge/sdk-core/sdk/src/lib.rs +792 -0
  188. data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
  189. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
  190. data/bridge/sdk-core/sdk/src/workflow_context.rs +683 -0
  191. data/bridge/sdk-core/sdk/src/workflow_future.rs +503 -0
  192. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
  193. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
  194. data/bridge/sdk-core/sdk-core-protos/build.rs +108 -0
  195. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  196. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +497 -0
  197. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
  198. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1910 -0
  199. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  200. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  201. data/bridge/sdk-core/test-utils/Cargo.toml +35 -0
  202. data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
  203. data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
  204. data/bridge/sdk-core/test-utils/src/lib.rs +598 -0
  205. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
  206. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
  207. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +218 -0
  208. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +146 -0
  209. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
  210. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
  211. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
  212. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
  213. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
  214. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
  215. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
  216. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
  217. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
  218. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +634 -0
  219. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
  220. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +137 -0
  221. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
  222. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
  223. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
  224. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
  225. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
  226. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +587 -0
  227. data/bridge/sdk-core/tests/load_tests.rs +191 -0
  228. data/bridge/sdk-core/tests/main.rs +111 -0
  229. data/bridge/sdk-core/tests/runner.rs +93 -0
  230. data/bridge/src/connection.rs +167 -0
  231. data/bridge/src/lib.rs +180 -0
  232. data/bridge/src/runtime.rs +47 -0
  233. data/bridge/src/worker.rs +73 -0
  234. data/ext/Rakefile +9 -0
  235. data/lib/bridge.so +0 -0
  236. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
  237. data/lib/gen/temporal/api/batch/v1/message_pb.rb +48 -0
  238. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +67 -0
  239. data/lib/gen/temporal/api/command/v1/message_pb.rb +166 -0
  240. data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
  241. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +32 -0
  242. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +26 -0
  243. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +37 -0
  244. data/lib/gen/temporal/api/enums/v1/common_pb.rb +41 -0
  245. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +67 -0
  246. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +71 -0
  247. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
  248. data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
  249. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
  250. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
  251. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
  252. data/lib/gen/temporal/api/enums/v1/update_pb.rb +28 -0
  253. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
  254. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
  255. data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
  256. data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
  257. data/lib/gen/temporal/api/history/v1/message_pb.rb +489 -0
  258. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
  259. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +125 -0
  260. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
  261. data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
  262. data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
  263. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +128 -0
  264. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
  265. data/lib/gen/temporal/api/update/v1/message_pb.rb +26 -0
  266. data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
  267. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +110 -0
  268. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +771 -0
  269. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
  270. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
  271. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
  272. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
  273. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
  274. data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
  275. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
  276. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
  277. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +164 -0
  278. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +192 -0
  279. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
  280. data/lib/temporal/bridge.rb +14 -0
  281. data/lib/temporal/client/implementation.rb +339 -0
  282. data/lib/temporal/client/workflow_handle.rb +243 -0
  283. data/lib/temporal/client.rb +144 -0
  284. data/lib/temporal/connection.rb +736 -0
  285. data/lib/temporal/data_converter.rb +150 -0
  286. data/lib/temporal/error/failure.rb +194 -0
  287. data/lib/temporal/error/workflow_failure.rb +17 -0
  288. data/lib/temporal/errors.rb +22 -0
  289. data/lib/temporal/failure_converter/base.rb +26 -0
  290. data/lib/temporal/failure_converter/basic.rb +313 -0
  291. data/lib/temporal/failure_converter.rb +8 -0
  292. data/lib/temporal/interceptor/chain.rb +27 -0
  293. data/lib/temporal/interceptor/client.rb +102 -0
  294. data/lib/temporal/payload_codec/base.rb +32 -0
  295. data/lib/temporal/payload_converter/base.rb +24 -0
  296. data/lib/temporal/payload_converter/bytes.rb +26 -0
  297. data/lib/temporal/payload_converter/composite.rb +47 -0
  298. data/lib/temporal/payload_converter/encoding_base.rb +35 -0
  299. data/lib/temporal/payload_converter/json.rb +25 -0
  300. data/lib/temporal/payload_converter/nil.rb +25 -0
  301. data/lib/temporal/payload_converter.rb +14 -0
  302. data/lib/temporal/retry_policy.rb +82 -0
  303. data/lib/temporal/retry_state.rb +35 -0
  304. data/lib/temporal/runtime.rb +22 -0
  305. data/lib/temporal/timeout_type.rb +29 -0
  306. data/lib/temporal/version.rb +1 -1
  307. data/lib/temporal/workflow/execution_info.rb +54 -0
  308. data/lib/temporal/workflow/execution_status.rb +36 -0
  309. data/lib/temporal/workflow/id_reuse_policy.rb +36 -0
  310. data/lib/temporal/workflow/query_reject_condition.rb +33 -0
  311. data/lib/temporal.rb +4 -0
  312. data/lib/temporalio.rb +3 -1
  313. data/lib/thermite_patch.rb +23 -0
  314. data/temporalio.gemspec +41 -0
  315. metadata +543 -9
  316. data/temporal.gemspec +0 -20
@@ -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'