temporalio 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +130 -0
- data/bridge/Cargo.lock +2865 -0
- data/bridge/Cargo.toml +26 -0
- data/bridge/sdk-core/ARCHITECTURE.md +76 -0
- data/bridge/sdk-core/Cargo.lock +2606 -0
- data/bridge/sdk-core/Cargo.toml +2 -0
- data/bridge/sdk-core/LICENSE.txt +23 -0
- data/bridge/sdk-core/README.md +107 -0
- data/bridge/sdk-core/arch_docs/diagrams/README.md +10 -0
- data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +40 -0
- data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +1 -0
- data/bridge/sdk-core/arch_docs/sticky_queues.md +51 -0
- data/bridge/sdk-core/bridge-ffi/Cargo.toml +24 -0
- data/bridge/sdk-core/bridge-ffi/LICENSE.txt +23 -0
- data/bridge/sdk-core/bridge-ffi/build.rs +25 -0
- data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +249 -0
- data/bridge/sdk-core/bridge-ffi/src/lib.rs +825 -0
- data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +211 -0
- data/bridge/sdk-core/client/Cargo.toml +40 -0
- data/bridge/sdk-core/client/LICENSE.txt +23 -0
- data/bridge/sdk-core/client/src/lib.rs +1294 -0
- data/bridge/sdk-core/client/src/metrics.rs +165 -0
- data/bridge/sdk-core/client/src/raw.rs +931 -0
- data/bridge/sdk-core/client/src/retry.rs +674 -0
- data/bridge/sdk-core/client/src/workflow_handle/mod.rs +185 -0
- data/bridge/sdk-core/core/Cargo.toml +116 -0
- data/bridge/sdk-core/core/LICENSE.txt +23 -0
- data/bridge/sdk-core/core/benches/workflow_replay.rs +73 -0
- data/bridge/sdk-core/core/src/abstractions.rs +166 -0
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +911 -0
- data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +221 -0
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +107 -0
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +515 -0
- data/bridge/sdk-core/core/src/core_tests/mod.rs +100 -0
- data/bridge/sdk-core/core/src/core_tests/queries.rs +736 -0
- data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +65 -0
- data/bridge/sdk-core/core/src/core_tests/workers.rs +259 -0
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +124 -0
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +2070 -0
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +515 -0
- data/bridge/sdk-core/core/src/lib.rs +175 -0
- data/bridge/sdk-core/core/src/log_export.rs +62 -0
- data/bridge/sdk-core/core/src/pollers/mod.rs +54 -0
- data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +297 -0
- data/bridge/sdk-core/core/src/protosext/mod.rs +428 -0
- data/bridge/sdk-core/core/src/replay/mod.rs +71 -0
- data/bridge/sdk-core/core/src/retry_logic.rs +202 -0
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +383 -0
- data/bridge/sdk-core/core/src/telemetry/mod.rs +412 -0
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +77 -0
- data/bridge/sdk-core/core/src/test_help/mod.rs +875 -0
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +580 -0
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +1042 -0
- data/bridge/sdk-core/core/src/worker/activities.rs +464 -0
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +87 -0
- data/bridge/sdk-core/core/src/worker/client.rs +347 -0
- data/bridge/sdk-core/core/src/worker/mod.rs +566 -0
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +37 -0
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +110 -0
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +458 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +911 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +298 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +171 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +860 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +140 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +161 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +133 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +1448 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +342 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +127 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +712 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +71 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +443 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +439 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +169 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +246 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +96 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +1184 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +277 -0
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +198 -0
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +647 -0
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +1143 -0
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +145 -0
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +88 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +940 -0
- data/bridge/sdk-core/core-api/Cargo.toml +31 -0
- data/bridge/sdk-core/core-api/LICENSE.txt +23 -0
- data/bridge/sdk-core/core-api/src/errors.rs +95 -0
- data/bridge/sdk-core/core-api/src/lib.rs +151 -0
- data/bridge/sdk-core/core-api/src/worker.rs +135 -0
- data/bridge/sdk-core/etc/deps.svg +187 -0
- data/bridge/sdk-core/etc/dynamic-config.yaml +2 -0
- data/bridge/sdk-core/etc/otel-collector-config.yaml +36 -0
- data/bridge/sdk-core/etc/prometheus.yaml +6 -0
- data/bridge/sdk-core/fsm/Cargo.toml +18 -0
- data/bridge/sdk-core/fsm/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/README.md +3 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +27 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +647 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +8 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +18 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +12 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +41 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +14 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +32 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +31 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +46 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +29 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +12 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +32 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +18 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +11 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +5 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +14 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +23 -0
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +249 -0
- data/bridge/sdk-core/fsm/src/lib.rs +2 -0
- data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
- data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
- data/bridge/sdk-core/integ-with-otel.sh +7 -0
- data/bridge/sdk-core/protos/api_upstream/README.md +9 -0
- data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +40 -0
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +12 -0
- data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +141 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +86 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +83 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +259 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +112 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +46 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/cluster.proto +40 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +57 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +55 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +168 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +97 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +51 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +50 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +41 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +60 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +59 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +51 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +122 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +108 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +114 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +56 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +751 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +97 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +161 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +99 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +61 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +55 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +300 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +108 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +46 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +59 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +145 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +1124 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +401 -0
- data/bridge/sdk-core/protos/grpc/health/v1/health.proto +63 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +79 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +210 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +77 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +15 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +30 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +261 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +297 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +29 -0
- data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +38 -0
- data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +13 -0
- data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +141 -0
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +63 -0
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +90 -0
- data/bridge/sdk-core/rustfmt.toml +1 -0
- data/bridge/sdk-core/sdk/Cargo.toml +47 -0
- data/bridge/sdk-core/sdk/LICENSE.txt +23 -0
- data/bridge/sdk-core/sdk/src/activity_context.rs +230 -0
- data/bridge/sdk-core/sdk/src/app_data.rs +37 -0
- data/bridge/sdk-core/sdk/src/conversions.rs +8 -0
- data/bridge/sdk-core/sdk/src/interceptors.rs +17 -0
- data/bridge/sdk-core/sdk/src/lib.rs +792 -0
- data/bridge/sdk-core/sdk/src/payload_converter.rs +11 -0
- data/bridge/sdk-core/sdk/src/workflow_context/options.rs +295 -0
- data/bridge/sdk-core/sdk/src/workflow_context.rs +683 -0
- data/bridge/sdk-core/sdk/src/workflow_future.rs +503 -0
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +30 -0
- data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +23 -0
- data/bridge/sdk-core/sdk-core-protos/build.rs +108 -0
- data/bridge/sdk-core/sdk-core-protos/src/constants.rs +7 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +497 -0
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +230 -0
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +1910 -0
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
- data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
- data/bridge/sdk-core/test-utils/Cargo.toml +35 -0
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +1579 -0
- data/bridge/sdk-core/test-utils/src/histfetch.rs +28 -0
- data/bridge/sdk-core/test-utils/src/lib.rs +598 -0
- data/bridge/sdk-core/tests/integ_tests/client_tests.rs +36 -0
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +128 -0
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +218 -0
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +146 -0
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +437 -0
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +93 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +878 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +61 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +59 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +58 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +50 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +60 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +54 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +634 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +113 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +137 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +93 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +167 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +99 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +131 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +75 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +587 -0
- data/bridge/sdk-core/tests/load_tests.rs +191 -0
- data/bridge/sdk-core/tests/main.rs +111 -0
- data/bridge/sdk-core/tests/runner.rs +93 -0
- data/bridge/src/connection.rs +167 -0
- data/bridge/src/lib.rs +180 -0
- data/bridge/src/runtime.rs +47 -0
- data/bridge/src/worker.rs +73 -0
- data/ext/Rakefile +9 -0
- data/lib/bridge.so +0 -0
- data/lib/gen/dependencies/gogoproto/gogo_pb.rb +14 -0
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +48 -0
- data/lib/gen/temporal/api/cluster/v1/message_pb.rb +67 -0
- data/lib/gen/temporal/api/command/v1/message_pb.rb +166 -0
- data/lib/gen/temporal/api/common/v1/message_pb.rb +69 -0
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +32 -0
- data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +26 -0
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +37 -0
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +41 -0
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +67 -0
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +71 -0
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +37 -0
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +31 -0
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +24 -0
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +28 -0
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +30 -0
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +28 -0
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +89 -0
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +84 -0
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +83 -0
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +40 -0
- data/lib/gen/temporal/api/history/v1/message_pb.rb +489 -0
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +63 -0
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +125 -0
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +20 -0
- data/lib/gen/temporal/api/query/v1/message_pb.rb +38 -0
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +37 -0
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +128 -0
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +73 -0
- data/lib/gen/temporal/api/update/v1/message_pb.rb +26 -0
- data/lib/gen/temporal/api/version/v1/message_pb.rb +41 -0
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +110 -0
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +771 -0
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +20 -0
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +58 -0
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +57 -0
- data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +222 -0
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +57 -0
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +22 -0
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +34 -0
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +27 -0
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +164 -0
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +192 -0
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +34 -0
- data/lib/temporal/bridge.rb +14 -0
- data/lib/temporal/client/implementation.rb +339 -0
- data/lib/temporal/client/workflow_handle.rb +243 -0
- data/lib/temporal/client.rb +144 -0
- data/lib/temporal/connection.rb +736 -0
- data/lib/temporal/data_converter.rb +150 -0
- data/lib/temporal/error/failure.rb +194 -0
- data/lib/temporal/error/workflow_failure.rb +17 -0
- data/lib/temporal/errors.rb +22 -0
- data/lib/temporal/failure_converter/base.rb +26 -0
- data/lib/temporal/failure_converter/basic.rb +313 -0
- data/lib/temporal/failure_converter.rb +8 -0
- data/lib/temporal/interceptor/chain.rb +27 -0
- data/lib/temporal/interceptor/client.rb +102 -0
- data/lib/temporal/payload_codec/base.rb +32 -0
- data/lib/temporal/payload_converter/base.rb +24 -0
- data/lib/temporal/payload_converter/bytes.rb +26 -0
- data/lib/temporal/payload_converter/composite.rb +47 -0
- data/lib/temporal/payload_converter/encoding_base.rb +35 -0
- data/lib/temporal/payload_converter/json.rb +25 -0
- data/lib/temporal/payload_converter/nil.rb +25 -0
- data/lib/temporal/payload_converter.rb +14 -0
- data/lib/temporal/retry_policy.rb +82 -0
- data/lib/temporal/retry_state.rb +35 -0
- data/lib/temporal/runtime.rb +22 -0
- data/lib/temporal/timeout_type.rb +29 -0
- data/lib/temporal/version.rb +3 -0
- data/lib/temporal/workflow/execution_info.rb +54 -0
- data/lib/temporal/workflow/execution_status.rb +36 -0
- data/lib/temporal/workflow/id_reuse_policy.rb +36 -0
- data/lib/temporal/workflow/query_reject_condition.rb +33 -0
- data/lib/temporal.rb +8 -0
- data/lib/temporalio.rb +3 -0
- data/lib/thermite_patch.rb +23 -0
- data/temporalio.gemspec +41 -0
- metadata +583 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
#![allow(dead_code)]
|
2
|
+
|
3
|
+
extern crate rustfsm_trait as rustfsm;
|
4
|
+
|
5
|
+
use rustfsm_procmacro::fsm;
|
6
|
+
use rustfsm_trait::TransitionResult;
|
7
|
+
use std::convert::Infallible;
|
8
|
+
|
9
|
+
fsm! {
|
10
|
+
name SimpleMachine; command SimpleMachineCommand; error Infallible;
|
11
|
+
|
12
|
+
One --(A(String), foo)--> Two;
|
13
|
+
One --(A(String), foo)--> Three;
|
14
|
+
|
15
|
+
Two --(B(String), bar)--> One;
|
16
|
+
Two --(B(String), bar)--> Two;
|
17
|
+
Two --(B(String), bar)--> Three;
|
18
|
+
}
|
19
|
+
|
20
|
+
#[derive(Default, Clone)]
|
21
|
+
pub struct One {}
|
22
|
+
impl One {
|
23
|
+
fn foo(self, _: String) -> SimpleMachineTransition<TwoOrThree> {
|
24
|
+
TransitionResult::ok(vec![], Two {}.into())
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
#[derive(Default, Clone)]
|
29
|
+
pub struct Two {}
|
30
|
+
impl Two {
|
31
|
+
fn bar(self, _: String) -> SimpleMachineTransition<OneOrTwoOrThree> {
|
32
|
+
TransitionResult::ok(vec![], Three {}.into())
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
#[derive(Default, Clone)]
|
37
|
+
pub struct Three {}
|
38
|
+
|
39
|
+
pub enum SimpleMachineCommand {}
|
40
|
+
|
41
|
+
fn main() {}
|
@@ -0,0 +1,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() {}
|
data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs
ADDED
@@ -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,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
|
+
}
|
Binary file
|
Binary file
|
@@ -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'
|