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,650 +0,0 @@
1
- use proc_macro::TokenStream;
2
- use quote::{quote, quote_spanned};
3
- use std::collections::{hash_map::Entry, HashMap, HashSet};
4
- use syn::{
5
- parenthesized,
6
- parse::{Parse, ParseStream, Result},
7
- parse_macro_input,
8
- punctuated::Punctuated,
9
- spanned::Spanned,
10
- Error, Fields, Ident, Token, Type, Variant, Visibility,
11
- };
12
-
13
- /// Parses a DSL for defining finite state machines, and produces code implementing the
14
- /// [StateMachine](trait.StateMachine.html) trait.
15
- ///
16
- /// An example state machine definition of a card reader for unlocking a door:
17
- /// ```
18
- /// # extern crate rustfsm_trait as rustfsm;
19
- /// use rustfsm_procmacro::fsm;
20
- /// use std::convert::Infallible;
21
- /// use rustfsm_trait::{StateMachine, TransitionResult};
22
- ///
23
- /// fsm! {
24
- /// name CardReader; command Commands; error Infallible; shared_state SharedState;
25
- ///
26
- /// Locked --(CardReadable(CardData), shared on_card_readable) --> ReadingCard;
27
- /// Locked --(CardReadable(CardData), shared on_card_readable) --> Locked;
28
- /// ReadingCard --(CardAccepted, on_card_accepted) --> DoorOpen;
29
- /// ReadingCard --(CardRejected, on_card_rejected) --> Locked;
30
- /// DoorOpen --(DoorClosed, on_door_closed) --> Locked;
31
- /// }
32
- ///
33
- /// #[derive(Clone)]
34
- /// pub struct SharedState {
35
- /// last_id: Option<String>
36
- /// }
37
- ///
38
- /// #[derive(Debug, Clone, Eq, PartialEq, Hash)]
39
- /// pub enum Commands {
40
- /// StartBlinkingLight,
41
- /// StopBlinkingLight,
42
- /// ProcessData(CardData),
43
- /// }
44
- ///
45
- /// type CardData = String;
46
- ///
47
- /// /// Door is locked / idle / we are ready to read
48
- /// #[derive(Debug, Clone, Eq, PartialEq, Hash, Default)]
49
- /// pub struct Locked {}
50
- ///
51
- /// /// Actively reading the card
52
- /// #[derive(Debug, Clone, Eq, PartialEq, Hash)]
53
- /// pub struct ReadingCard {
54
- /// card_data: CardData,
55
- /// }
56
- ///
57
- /// /// The door is open, we shouldn't be accepting cards and should be blinking the light
58
- /// #[derive(Debug, Clone, Eq, PartialEq, Hash)]
59
- /// pub struct DoorOpen {}
60
- /// impl DoorOpen {
61
- /// fn on_door_closed(&self) -> CardReaderTransition<Locked> {
62
- /// TransitionResult::ok(vec![], Locked {})
63
- /// }
64
- /// }
65
- ///
66
- /// impl Locked {
67
- /// fn on_card_readable(&self, shared_dat: SharedState, data: CardData)
68
- /// -> CardReaderTransition<ReadingCardOrLocked> {
69
- /// match shared_dat.last_id {
70
- /// // Arbitrarily deny the same person entering twice in a row
71
- /// Some(d) if d == data => TransitionResult::ok(vec![], Locked {}.into()),
72
- /// _ => {
73
- /// // Otherwise issue a processing command. This illustrates using the same handler
74
- /// // for different destinations
75
- /// TransitionResult::ok_shared(
76
- /// vec![
77
- /// Commands::ProcessData(data.clone()),
78
- /// Commands::StartBlinkingLight,
79
- /// ],
80
- /// ReadingCard { card_data: data.clone() }.into(),
81
- /// SharedState { last_id: Some(data) }
82
- /// )
83
- /// }
84
- /// }
85
- /// }
86
- /// }
87
- ///
88
- /// impl ReadingCard {
89
- /// fn on_card_accepted(&self) -> CardReaderTransition<DoorOpen> {
90
- /// TransitionResult::ok(vec![Commands::StopBlinkingLight], DoorOpen {})
91
- /// }
92
- /// fn on_card_rejected(&self) -> CardReaderTransition<Locked> {
93
- /// TransitionResult::ok(vec![Commands::StopBlinkingLight], Locked {})
94
- /// }
95
- /// }
96
- ///
97
- /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
98
- /// let crs = CardReaderState::Locked(Locked {});
99
- /// let mut cr = CardReader { state: crs, shared_state: SharedState { last_id: None } };
100
- /// let cmds = cr.on_event_mut(CardReaderEvents::CardReadable("badguy".to_string()))?;
101
- /// assert_eq!(cmds[0], Commands::ProcessData("badguy".to_string()));
102
- /// assert_eq!(cmds[1], Commands::StartBlinkingLight);
103
- ///
104
- /// let cmds = cr.on_event_mut(CardReaderEvents::CardRejected)?;
105
- /// assert_eq!(cmds[0], Commands::StopBlinkingLight);
106
- ///
107
- /// let cmds = cr.on_event_mut(CardReaderEvents::CardReadable("goodguy".to_string()))?;
108
- /// assert_eq!(cmds[0], Commands::ProcessData("goodguy".to_string()));
109
- /// assert_eq!(cmds[1], Commands::StartBlinkingLight);
110
- ///
111
- /// let cmds = cr.on_event_mut(CardReaderEvents::CardAccepted)?;
112
- /// assert_eq!(cmds[0], Commands::StopBlinkingLight);
113
- /// # Ok(())
114
- /// # }
115
- /// ```
116
- ///
117
- /// In the above example the first word is the name of the state machine, then after the comma the
118
- /// type (which you must define separately) of commands produced by the machine.
119
- ///
120
- /// then each line represents a transition, where the first word is the initial state, the tuple
121
- /// inside the arrow is `(eventtype[, event handler])`, and the word after the arrow is the
122
- /// destination state. here `eventtype` is an enum variant , and `event_handler` is a function you
123
- /// must define outside the enum whose form depends on the event variant. the only variant types
124
- /// allowed are unit and one-item tuple variants. For unit variants, the function takes no
125
- /// parameters. For the tuple variants, the function takes the variant data as its parameter. In
126
- /// either case the function is expected to return a `TransitionResult` to the appropriate state.
127
- ///
128
- /// The first transition can be interpreted as "If the machine is in the locked state, when a
129
- /// `CardReadable` event is seen, call `on_card_readable` (passing in `CardData`) and transition to
130
- /// the `ReadingCard` state.
131
- ///
132
- /// The macro will generate a few things:
133
- /// * A struct for the overall state machine, named with the provided name. Here:
134
- /// ```text
135
- /// struct CardReader {
136
- /// state: CardReaderState,
137
- /// shared_state: SharedState,
138
- /// }
139
- /// ```
140
- /// * An enum with a variant for each state, named with the provided name + "State".
141
- /// ```text
142
- /// enum CardReaderState {
143
- /// Locked(Locked),
144
- /// ReadingCard(ReadingCard),
145
- /// DoorOpen(DoorOpen),
146
- /// }
147
- /// ```
148
- ///
149
- /// You are expected to define a type for each state, to contain that state's data. If there is
150
- /// no data, you can simply: `type StateName = ()`
151
- /// * For any instance of transitions with the same event/handler which transition to different
152
- /// destination states (dynamic destinations), an enum named like `DestAOrDestBOrDestC` is
153
- /// generated. This enum must be used as the destination "state" from those handlers.
154
- /// * An enum with a variant for each event. You are expected to define the type (if any) contained
155
- /// in the event variant.
156
- /// ```text
157
- /// enum CardReaderEvents {
158
- /// DoorClosed,
159
- /// CardAccepted,
160
- /// CardRejected,
161
- /// CardReadable(CardData),
162
- /// }
163
- /// ```
164
- /// * An implementation of the [StateMachine](trait.StateMachine.html) trait for the generated state
165
- /// machine enum (in this case, `CardReader`)
166
- /// * A type alias for a [TransitionResult](enum.TransitionResult.html) with the appropriate generic
167
- /// parameters set for your machine. It is named as your machine with `Transition` appended. In
168
- /// this case, `CardReaderTransition`.
169
- #[proc_macro]
170
- pub fn fsm(input: TokenStream) -> TokenStream {
171
- let def: StateMachineDefinition = parse_macro_input!(input as StateMachineDefinition);
172
- def.codegen()
173
- }
174
-
175
- mod kw {
176
- syn::custom_keyword!(name);
177
- syn::custom_keyword!(command);
178
- syn::custom_keyword!(error);
179
- syn::custom_keyword!(shared);
180
- syn::custom_keyword!(shared_state);
181
- }
182
-
183
- struct StateMachineDefinition {
184
- visibility: Visibility,
185
- name: Ident,
186
- shared_state_type: Option<Type>,
187
- command_type: Ident,
188
- error_type: Ident,
189
- transitions: Vec<Transition>,
190
- }
191
-
192
- impl StateMachineDefinition {
193
- fn is_final_state(&self, state: &Ident) -> bool {
194
- // If no transitions go from this state, it's a final state.
195
- !self.transitions.iter().any(|t| t.from == *state)
196
- }
197
- }
198
-
199
- impl Parse for StateMachineDefinition {
200
- fn parse(input: ParseStream) -> Result<Self> {
201
- // Parse visibility if present
202
- let visibility = input.parse()?;
203
- // parse the state machine name, command type, and error type
204
- let (name, command_type, error_type, shared_state_type) = parse_machine_types(input)
205
- .map_err(|mut e| {
206
- e.combine(Error::new(
207
- e.span(),
208
- "The fsm definition should begin with `name MachineName; command CommandType; \
209
- error ErrorType;` optionally followed by `shared_state SharedStateType;`",
210
- ));
211
- e
212
- })?;
213
- // Then the state machine definition is simply a sequence of transitions separated by
214
- // semicolons
215
- let transitions: Punctuated<Transition, Token![;]> =
216
- input.parse_terminated(Transition::parse)?;
217
- let transitions: Vec<_> = transitions.into_iter().collect();
218
- // Check for and whine about any identical transitions. We do this here because preserving
219
- // the order transitions were defined in is important, so simply collecting to a set is
220
- // not ideal.
221
- let trans_set: HashSet<_> = transitions.iter().collect();
222
- if trans_set.len() != transitions.len() {
223
- return Err(syn::Error::new(
224
- input.span(),
225
- "Duplicate transitions are not allowed!",
226
- ));
227
- }
228
- Ok(Self {
229
- visibility,
230
- name,
231
- shared_state_type,
232
- command_type,
233
- error_type,
234
- transitions,
235
- })
236
- }
237
- }
238
-
239
- fn parse_machine_types(input: ParseStream) -> Result<(Ident, Ident, Ident, Option<Type>)> {
240
- let _: kw::name = input.parse()?;
241
- let name: Ident = input.parse()?;
242
- input.parse::<Token![;]>()?;
243
-
244
- let _: kw::command = input.parse()?;
245
- let command_type: Ident = input.parse()?;
246
- input.parse::<Token![;]>()?;
247
-
248
- let _: kw::error = input.parse()?;
249
- let error_type: Ident = input.parse()?;
250
- input.parse::<Token![;]>()?;
251
-
252
- let shared_state_type: Option<Type> = if input.peek(kw::shared_state) {
253
- let _: kw::shared_state = input.parse()?;
254
- let typep = input.parse()?;
255
- input.parse::<Token![;]>()?;
256
- Some(typep)
257
- } else {
258
- None
259
- };
260
- Ok((name, command_type, error_type, shared_state_type))
261
- }
262
-
263
- #[derive(Debug, Clone, Eq, PartialEq, Hash)]
264
- struct Transition {
265
- from: Ident,
266
- to: Vec<Ident>,
267
- event: Variant,
268
- handler: Option<Ident>,
269
- mutates_shared: bool,
270
- }
271
-
272
- impl Parse for Transition {
273
- fn parse(input: ParseStream) -> Result<Self> {
274
- // Parse the initial state name
275
- let from: Ident = input.parse()?;
276
- // Parse at least one dash
277
- input.parse::<Token![-]>()?;
278
- while input.peek(Token![-]) {
279
- input.parse::<Token![-]>()?;
280
- }
281
- // Parse transition information inside parens
282
- let transition_info;
283
- parenthesized!(transition_info in input);
284
- // Get the event variant definition
285
- let event: Variant = transition_info.parse()?;
286
- // Reject non-unit or single-item-tuple variants
287
- match &event.fields {
288
- Fields::Named(_) => {
289
- return Err(Error::new(
290
- event.span(),
291
- "Struct variants are not supported for events",
292
- ))
293
- }
294
- Fields::Unnamed(uf) => {
295
- if uf.unnamed.len() != 1 {
296
- return Err(Error::new(
297
- event.span(),
298
- "Only tuple variants with exactly one item are supported for events",
299
- ));
300
- }
301
- }
302
- Fields::Unit => {}
303
- }
304
- // Check if there is an event handler, and parse it
305
- let (mutates_shared, handler) = if transition_info.peek(Token![,]) {
306
- transition_info.parse::<Token![,]>()?;
307
- // Check for mut keyword signifying handler wants to mutate shared state
308
- let mutates = if transition_info.peek(kw::shared) {
309
- transition_info.parse::<kw::shared>()?;
310
- true
311
- } else {
312
- false
313
- };
314
- (mutates, Some(transition_info.parse()?))
315
- } else {
316
- (false, None)
317
- };
318
- // Parse at least one dash followed by the "arrow"
319
- input.parse::<Token![-]>()?;
320
- while input.peek(Token![-]) {
321
- input.parse::<Token![-]>()?;
322
- }
323
- input.parse::<Token![>]>()?;
324
- // Parse the destination state
325
- let to: Ident = input.parse()?;
326
-
327
- Ok(Self {
328
- from,
329
- event,
330
- handler,
331
- to: vec![to],
332
- mutates_shared,
333
- })
334
- }
335
- }
336
-
337
- impl StateMachineDefinition {
338
- fn codegen(&self) -> TokenStream {
339
- let visibility = self.visibility.clone();
340
- // First extract all of the states into a set, and build the enum's insides
341
- let states = self.all_states();
342
- let state_variants = states.iter().map(|s| {
343
- let statestr = s.to_string();
344
- quote! {
345
- #[display(fmt=#statestr)]
346
- #s(#s)
347
- }
348
- });
349
- let name = &self.name;
350
- let name_str = &self.name.to_string();
351
-
352
- let transition_result_name = Ident::new(&format!("{name}Transition"), name.span());
353
- let transition_type_alias = quote! {
354
- type #transition_result_name<Ds, Sm = #name> = TransitionResult<Sm, Ds>;
355
- };
356
-
357
- let state_enum_name = Ident::new(&format!("{name}State"), name.span());
358
- // If user has not defined any shared state, use the unit type.
359
- let shared_state_type = self
360
- .shared_state_type
361
- .clone()
362
- .unwrap_or_else(|| syn::parse_str("()").unwrap());
363
- let machine_struct = quote! {
364
- #[derive(Clone)]
365
- #visibility struct #name {
366
- state: #state_enum_name,
367
- shared_state: #shared_state_type
368
- }
369
- };
370
- let states_enum = quote! {
371
- #[derive(::derive_more::From, Clone, ::derive_more::Display)]
372
- #visibility enum #state_enum_name {
373
- #(#state_variants),*
374
- }
375
- };
376
- let state_is_final_match_arms = states.iter().map(|s| {
377
- let val = if self.is_final_state(s) {
378
- quote! { true }
379
- } else {
380
- quote! { false }
381
- };
382
- quote! { #state_enum_name::#s(_) => #val }
383
- });
384
- let states_enum_impl = quote! {
385
- impl #state_enum_name {
386
- fn is_final(&self) -> bool {
387
- match self {
388
- #(#state_is_final_match_arms),*
389
- }
390
- }
391
- }
392
- };
393
-
394
- // Build the events enum
395
- let events: HashSet<Variant> = self.transitions.iter().map(|t| t.event.clone()).collect();
396
- let events_enum_name = Ident::new(&format!("{name}Events"), name.span());
397
- let events: Vec<_> = events
398
- .into_iter()
399
- .map(|v| {
400
- let vname = v.ident.to_string();
401
- quote! {
402
- #[display(fmt=#vname)]
403
- #v
404
- }
405
- })
406
- .collect();
407
- let events_enum = quote! {
408
- #[derive(::derive_more::Display)]
409
- #visibility enum #events_enum_name {
410
- #(#events),*
411
- }
412
- };
413
-
414
- // Construct the trait implementation
415
- let cmd_type = &self.command_type;
416
- let err_type = &self.error_type;
417
- let mut statemap: HashMap<Ident, Vec<Transition>> = HashMap::new();
418
- for t in &self.transitions {
419
- statemap
420
- .entry(t.from.clone())
421
- .and_modify(|v| v.push(t.clone()))
422
- .or_insert_with(|| vec![t.clone()]);
423
- }
424
- // Add any states without any transitions to the map
425
- for s in &states {
426
- if !statemap.contains_key(s) {
427
- statemap.insert(s.clone(), vec![]);
428
- }
429
- }
430
- let mut multi_dest_enums = vec![];
431
- let state_branches: Vec<_> = statemap.into_iter().map(|(from, transitions)| {
432
- // Merge transition dest states with the same handler
433
- let transitions = merge_transition_dests(transitions);
434
- let event_branches = transitions
435
- .into_iter()
436
- .map(|ts| {
437
- let ev_variant = &ts.event.ident;
438
- if let Some(ts_fn) = ts.handler.clone() {
439
- let span = ts_fn.span();
440
- let trans_type = match ts.to.as_slice() {
441
- [] => unreachable!("There will be at least one dest state in transitions"),
442
- [one_to] => quote! {
443
- #transition_result_name<#one_to>
444
- },
445
- multi_dests => {
446
- let string_dests: Vec<_> = multi_dests.iter()
447
- .map(ToString::to_string).collect();
448
- let enum_ident = Ident::new(&string_dests.join("Or"),
449
- multi_dests[0].span());
450
- let multi_dest_enum = quote! {
451
- #[derive(::derive_more::From)]
452
- #visibility enum #enum_ident {
453
- #(#multi_dests(#multi_dests)),*
454
- }
455
- impl ::core::convert::From<#enum_ident> for #state_enum_name {
456
- fn from(v: #enum_ident) -> Self {
457
- match v {
458
- #( #enum_ident::#multi_dests(sv) =>
459
- Self::#multi_dests(sv) ),*
460
- }
461
- }
462
- }
463
- };
464
- multi_dest_enums.push(multi_dest_enum);
465
- quote! {
466
- #transition_result_name<#enum_ident>
467
- }
468
- }
469
- };
470
- match ts.event.fields {
471
- Fields::Unnamed(_) => {
472
- let arglist = if ts.mutates_shared {
473
- quote! {self.shared_state, val}
474
- } else {
475
- quote! {val}
476
- };
477
- quote_spanned! {span=>
478
- #events_enum_name::#ev_variant(val) => {
479
- let res: #trans_type = state_data.#ts_fn(#arglist);
480
- res.into_general()
481
- }
482
- }
483
- }
484
- Fields::Unit => {
485
- let arglist = if ts.mutates_shared {
486
- quote! {self.shared_state}
487
- } else {
488
- quote! {}
489
- };
490
- quote_spanned! {span=>
491
- #events_enum_name::#ev_variant => {
492
- let res: #trans_type = state_data.#ts_fn(#arglist);
493
- res.into_general()
494
- }
495
- }
496
- }
497
- Fields::Named(_) => unreachable!(),
498
- }
499
- } else {
500
- // If events do not have a handler, attempt to construct the next state
501
- // using `Default`.
502
- if let [new_state] = ts.to.as_slice() {
503
- let span = new_state.span();
504
- let default_trans = quote_spanned! {span=>
505
- TransitionResult::<_, #new_state>::from::<#from>(state_data).into_general()
506
- };
507
- let span = ts.event.span();
508
- match ts.event.fields {
509
- Fields::Unnamed(_) => quote_spanned! {span=>
510
- #events_enum_name::#ev_variant(_val) => {
511
- #default_trans
512
- }
513
- },
514
- Fields::Unit => quote_spanned! {span=>
515
- #events_enum_name::#ev_variant => {
516
- #default_trans
517
- }
518
- },
519
- Fields::Named(_) => unreachable!(),
520
- }
521
-
522
- } else {
523
- unreachable!("It should be impossible to have more than one dest state in no-handler transitions")
524
- }
525
- }
526
- })
527
- // Since most states won't handle every possible event, return an error to that effect
528
- .chain(std::iter::once(
529
- quote! { _ => { return TransitionResult::InvalidTransition } },
530
- ));
531
- quote! {
532
- #state_enum_name::#from(state_data) => match event {
533
- #(#event_branches),*
534
- }
535
- }
536
- }).collect();
537
-
538
- let viz_str = self.visualize();
539
-
540
- let trait_impl = quote! {
541
- impl ::rustfsm::StateMachine for #name {
542
- type Error = #err_type;
543
- type State = #state_enum_name;
544
- type SharedState = #shared_state_type;
545
- type Event = #events_enum_name;
546
- type Command = #cmd_type;
547
-
548
- fn name(&self) -> &str {
549
- #name_str
550
- }
551
-
552
- fn on_event(self, event: #events_enum_name)
553
- -> ::rustfsm::TransitionResult<Self, Self::State> {
554
- match self.state {
555
- #(#state_branches),*
556
- }
557
- }
558
-
559
- fn state(&self) -> &Self::State {
560
- &self.state
561
- }
562
-
563
- fn set_state(&mut self, new: Self::State) {
564
- self.state = new
565
- }
566
-
567
- fn shared_state(&self) -> &Self::SharedState{
568
- &self.shared_state
569
- }
570
-
571
- fn has_reached_final_state(&self) -> bool {
572
- self.state.is_final()
573
- }
574
-
575
- fn from_parts(shared: Self::SharedState, state: Self::State) -> Self {
576
- Self { shared_state: shared, state }
577
- }
578
-
579
- fn visualizer() -> &'static str {
580
- #viz_str
581
- }
582
- }
583
- };
584
-
585
- let output = quote! {
586
- #transition_type_alias
587
- #machine_struct
588
- #states_enum
589
- #(#multi_dest_enums)*
590
- #states_enum_impl
591
- #events_enum
592
- #trait_impl
593
- };
594
-
595
- TokenStream::from(output)
596
- }
597
-
598
- fn all_states(&self) -> HashSet<Ident> {
599
- self.transitions
600
- .iter()
601
- .flat_map(|t| {
602
- let mut states = t.to.clone();
603
- states.push(t.from.clone());
604
- states
605
- })
606
- .collect()
607
- }
608
-
609
- fn visualize(&self) -> String {
610
- let transitions: Vec<String> = self
611
- .transitions
612
- .iter()
613
- .flat_map(|t| {
614
- t.to.iter()
615
- .map(move |d| format!("{} --> {}: {}", t.from, d, t.event.ident))
616
- })
617
- // Add all final state transitions
618
- .chain(
619
- self.all_states()
620
- .iter()
621
- .filter(|s| self.is_final_state(s))
622
- .map(|s| format!("{s} --> [*]")),
623
- )
624
- .collect();
625
- let transitions = transitions.join("\n");
626
- format!("@startuml\n{transitions}\n@enduml")
627
- }
628
- }
629
-
630
- /// Merge transition's dest state lists for those with the same from state & handler
631
- fn merge_transition_dests(transitions: Vec<Transition>) -> Vec<Transition> {
632
- let mut map = HashMap::<_, Transition>::new();
633
- for t in transitions {
634
- // We want to use the transition sans-destinations as the key
635
- let without_dests = {
636
- let mut wd = t.clone();
637
- wd.to = vec![];
638
- wd
639
- };
640
- match map.entry(without_dests) {
641
- Entry::Occupied(mut e) => {
642
- e.get_mut().to.extend(t.to.into_iter());
643
- }
644
- Entry::Vacant(v) => {
645
- v.insert(t);
646
- }
647
- }
648
- }
649
- map.into_values().collect()
650
- }
@@ -1,8 +0,0 @@
1
- extern crate rustfsm_trait as rustfsm;
2
-
3
- #[test]
4
- fn tests() {
5
- let t = trybuild::TestCases::new();
6
- t.pass("tests/trybuild/*_pass.rs");
7
- t.compile_fail("tests/trybuild/*_fail.rs");
8
- }
@@ -1,18 +0,0 @@
1
- extern crate rustfsm_trait as rustfsm;
2
-
3
- use rustfsm_procmacro::fsm;
4
-
5
- fsm! {
6
- name SimpleMachine; command SimpleMachineCommand; error Infallible;
7
-
8
- One --(A)--> Two;
9
- One --(A)--> Two;
10
- }
11
-
12
- #[derive(Default, Clone)]
13
- pub struct One {}
14
-
15
- #[derive(Default, Clone)]
16
- pub struct Two {}
17
-
18
- fn main() {}
@@ -1,12 +0,0 @@
1
- error: Duplicate transitions are not allowed!
2
- --> $DIR/dupe_transitions_fail.rs:5:1
3
- |
4
- 5 | / fsm! {
5
- 6 | | name SimpleMachine; command SimpleMachineCommand; error Infallible;
6
- 7 | |
7
- 8 | | One --(A)--> Two;
8
- 9 | | One --(A)--> Two;
9
- 10 | | }
10
- | |_^
11
- |
12
- = note: this error originates in the macro `fsm` (in Nightly builds, run with -Z macro-backtrace for more info)