temporalio 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +180 -7
- data/bridge/Cargo.lock +208 -76
- data/bridge/Cargo.toml +5 -2
- data/bridge/sdk-core/Cargo.toml +1 -1
- data/bridge/sdk-core/README.md +20 -10
- data/bridge/sdk-core/client/Cargo.toml +1 -1
- data/bridge/sdk-core/client/src/lib.rs +227 -59
- data/bridge/sdk-core/client/src/metrics.rs +17 -8
- data/bridge/sdk-core/client/src/raw.rs +13 -12
- data/bridge/sdk-core/client/src/retry.rs +132 -43
- data/bridge/sdk-core/core/Cargo.toml +28 -15
- data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
- data/bridge/sdk-core/core/src/abstractions.rs +225 -36
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +217 -79
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +565 -34
- data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -90
- data/bridge/sdk-core/core/src/core_tests/workers.rs +3 -5
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +430 -67
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
- data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
- data/bridge/sdk-core/core/src/lib.rs +148 -34
- data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
- data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +219 -140
- data/bridge/sdk-core/core/src/telemetry/mod.rs +326 -315
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +20 -14
- data/bridge/sdk-core/core/src/test_help/mod.rs +85 -21
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
- data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +364 -128
- data/bridge/sdk-core/core/src/worker/activities.rs +263 -170
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +23 -3
- data/bridge/sdk-core/core/src/worker/client.rs +48 -6
- data/bridge/sdk-core/core/src/worker/mod.rs +186 -75
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +13 -24
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +879 -226
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +101 -48
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -12
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -9
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +90 -32
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +6 -9
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -10
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -9
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +160 -83
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +36 -54
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +179 -0
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +104 -157
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +8 -12
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -13
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +10 -4
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -11
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +395 -299
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +12 -20
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +33 -18
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1032 -374
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +525 -392
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
- data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +3 -6
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +456 -681
- data/bridge/sdk-core/core-api/Cargo.toml +6 -4
- data/bridge/sdk-core/core-api/src/errors.rs +1 -34
- data/bridge/sdk-core/core-api/src/lib.rs +7 -45
- data/bridge/sdk-core/core-api/src/telemetry.rs +141 -0
- data/bridge/sdk-core/core-api/src/worker.rs +27 -1
- data/bridge/sdk-core/etc/deps.svg +115 -140
- data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
- data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
- data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
- data/bridge/sdk-core/protos/api_upstream/{temporal/api/enums/v1/cluster.proto → build/tools.go} +7 -18
- data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +15 -26
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -9
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +10 -8
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +28 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +62 -26
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +24 -61
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
- data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
- data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
- data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +111 -36
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +19 -5
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +9 -0
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +9 -1
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
- data/bridge/sdk-core/sdk/Cargo.toml +4 -3
- data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
- data/bridge/sdk-core/sdk/src/lib.rs +94 -25
- data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
- data/bridge/sdk-core/sdk/src/workflow_future.rs +10 -13
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
- data/bridge/sdk-core/sdk-core-protos/build.rs +36 -2
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +164 -104
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +27 -23
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +252 -74
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
- data/bridge/sdk-core/test-utils/Cargo.toml +4 -1
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
- data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
- data/bridge/sdk-core/test-utils/src/lib.rs +161 -50
- data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
- data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
- data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
- data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +239 -0
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -60
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +151 -116
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +54 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +115 -24
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +27 -18
- data/bridge/sdk-core/tests/main.rs +8 -16
- data/bridge/sdk-core/tests/runner.rs +75 -36
- data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
- data/bridge/src/connection.rs +117 -82
- data/bridge/src/lib.rs +356 -42
- data/bridge/src/runtime.rs +10 -3
- data/bridge/src/test_server.rs +153 -0
- data/bridge/src/worker.rs +133 -9
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
- data/lib/gen/temporal/api/command/v1/message_pb.rb +10 -16
- data/lib/gen/temporal/api/common/v1/message_pb.rb +5 -1
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -3
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +5 -4
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +9 -1
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +7 -10
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/history/v1/message_pb.rb +34 -25
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +2 -1
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +14 -51
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
- data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
- data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
- data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
- data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
- data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
- data/lib/gen/temporal/api/update/v1/message_pb.rb +49 -3
- data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +47 -20
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +28 -21
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +32 -24
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
- data/lib/temporalio/activity/context.rb +102 -0
- data/lib/temporalio/activity/info.rb +67 -0
- data/lib/temporalio/activity.rb +85 -0
- data/lib/temporalio/bridge/connect_options.rb +15 -0
- data/lib/temporalio/bridge/error.rb +8 -0
- data/lib/temporalio/bridge/retry_config.rb +24 -0
- data/lib/temporalio/bridge/tls_options.rb +19 -0
- data/lib/temporalio/bridge.rb +14 -0
- data/lib/{temporal → temporalio}/client/implementation.rb +57 -56
- data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
- data/lib/{temporal → temporalio}/client.rb +19 -32
- data/lib/temporalio/connection/retry_config.rb +44 -0
- data/lib/temporalio/connection/service.rb +20 -0
- data/lib/temporalio/connection/test_service.rb +92 -0
- data/lib/temporalio/connection/tls_options.rb +51 -0
- data/lib/temporalio/connection/workflow_service.rb +731 -0
- data/lib/temporalio/connection.rb +86 -0
- data/lib/{temporal → temporalio}/data_converter.rb +76 -35
- data/lib/{temporal → temporalio}/error/failure.rb +6 -6
- data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
- data/lib/{temporal → temporalio}/errors.rb +19 -1
- data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
- data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
- data/lib/temporalio/failure_converter.rb +7 -0
- data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
- data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
- data/lib/{temporal → temporalio}/interceptor/chain.rb +7 -6
- data/lib/{temporal → temporalio}/interceptor/client.rb +27 -2
- data/lib/temporalio/interceptor.rb +22 -0
- data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
- data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
- data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
- data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
- data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
- data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
- data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
- data/lib/temporalio/payload_converter.rb +14 -0
- data/lib/{temporal → temporalio}/retry_policy.rb +17 -7
- data/lib/{temporal → temporalio}/retry_state.rb +1 -1
- data/lib/temporalio/runtime.rb +25 -0
- data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
- data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
- data/lib/temporalio/testing/workflow_environment.rb +112 -0
- data/lib/temporalio/testing.rb +175 -0
- data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
- data/lib/temporalio/version.rb +3 -0
- data/lib/temporalio/worker/activity_runner.rb +114 -0
- data/lib/temporalio/worker/activity_worker.rb +164 -0
- data/lib/temporalio/worker/reactor.rb +46 -0
- data/lib/temporalio/worker/runner.rb +63 -0
- data/lib/temporalio/worker/sync_worker.rb +124 -0
- data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
- data/lib/temporalio/worker.rb +204 -0
- data/lib/temporalio/workflow/async.rb +46 -0
- data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
- data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
- data/lib/temporalio/workflow/future.rb +138 -0
- data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
- data/lib/temporalio/workflow/info.rb +76 -0
- data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
- data/lib/temporalio.rb +12 -3
- data/temporalio.gemspec +11 -6
- metadata +137 -64
- data/bridge/sdk-core/Cargo.lock +0 -2606
- data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
- data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
- data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
- data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
- data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
- data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
- data/bridge/sdk-core/core/src/log_export.rs +0 -62
- data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
- data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
- data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
- data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
- data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
- data/lib/bridge.so +0 -0
- data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
- data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
- data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
- data/lib/temporal/bridge.rb +0 -14
- data/lib/temporal/connection.rb +0 -736
- data/lib/temporal/failure_converter.rb +0 -8
- data/lib/temporal/payload_converter.rb +0 -14
- data/lib/temporal/runtime.rb +0 -22
- data/lib/temporal/version.rb +0 -3
- data/lib/temporal.rb +0 -8
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require '
|
|
1
|
+
require 'temporalio/interceptor/client'
|
|
2
|
+
require 'temporalio/workflow/query_reject_condition'
|
|
3
3
|
|
|
4
|
-
module
|
|
4
|
+
module Temporalio
|
|
5
5
|
class Client
|
|
6
6
|
# Handle for interacting with a workflow.
|
|
7
7
|
#
|
|
8
|
-
# This is usually created via {
|
|
9
|
-
# from {
|
|
8
|
+
# This is usually created via {Temporalio::Client#workflow_handle} or returned
|
|
9
|
+
# from {Temporalio::Client#start_workflow}.
|
|
10
10
|
class WorkflowHandle
|
|
11
11
|
# @return [String] ID for the workflow.
|
|
12
12
|
attr_reader :id
|
|
@@ -14,10 +14,10 @@ module Temporal
|
|
|
14
14
|
# Run ID used for {#signal} and {#query} calls if present to ensure the query or signal happen
|
|
15
15
|
# on this exact run.
|
|
16
16
|
#
|
|
17
|
-
# This is only set on handles created via {
|
|
18
|
-
# parameter. {
|
|
17
|
+
# This is only set on handles created via {Temporalio::Client#workflow_handle} with a `run_id`
|
|
18
|
+
# parameter. {Temporalio::Client#start_workflow} does not set this value.
|
|
19
19
|
#
|
|
20
|
-
# This cannot be mutated. If a different run ID is needed, {
|
|
20
|
+
# This cannot be mutated. If a different run ID is needed, {Temporalio::Client#workflow_handle}
|
|
21
21
|
# must be used instead.
|
|
22
22
|
#
|
|
23
23
|
# @return [String]
|
|
@@ -26,11 +26,11 @@ module Temporal
|
|
|
26
26
|
# Run ID used for {#result} calls if present to ensure result is for a workflow starting from
|
|
27
27
|
# this run.
|
|
28
28
|
#
|
|
29
|
-
# When this handle is created via {
|
|
30
|
-
# `:run_id`. When this handle is created via {
|
|
29
|
+
# When this handle is created via {Temporalio::Client#workflow_handle}, this is the same as
|
|
30
|
+
# `:run_id`. When this handle is created via {Temporalio::Client#start_workflow}, this value
|
|
31
31
|
# will be the resulting run ID.
|
|
32
32
|
#
|
|
33
|
-
# This cannot be mutated. If a different run ID is needed, {
|
|
33
|
+
# This cannot be mutated. If a different run ID is needed, {Temporalio::Client#workflow_handle}
|
|
34
34
|
# must be used instead.
|
|
35
35
|
#
|
|
36
36
|
# @return [String]
|
|
@@ -39,12 +39,12 @@ module Temporal
|
|
|
39
39
|
# Run ID used for {#cancel} and {#terminate} calls if present to ensure the cancel and
|
|
40
40
|
# terminate happen for a workflow ID started with this run ID.
|
|
41
41
|
#
|
|
42
|
-
# This can be set when using {
|
|
43
|
-
# {
|
|
42
|
+
# This can be set when using {Temporalio::Client#workflow_handle}. When
|
|
43
|
+
# {Temporalio::Client#start_workflow} is called without a start signal, this is set to the
|
|
44
44
|
# resulting run.
|
|
45
45
|
#
|
|
46
46
|
# This cannot be mutated. If a different first execution run ID is needed,
|
|
47
|
-
# {
|
|
47
|
+
# {Temporalio::Client#workflow_handle} must be used instead.
|
|
48
48
|
#
|
|
49
49
|
# @return [String]
|
|
50
50
|
attr_reader :first_execution_run_id
|
|
@@ -60,7 +60,7 @@ module Temporal
|
|
|
60
60
|
# Wait for result of the workflow.
|
|
61
61
|
#
|
|
62
62
|
# This will use {#result_run_id} if present to base the result on. To use another run ID,
|
|
63
|
-
# a new handle must be created via {
|
|
63
|
+
# a new handle must be created via {Temporalio::Client#workflow_handle}.
|
|
64
64
|
#
|
|
65
65
|
# @param follow_runs [Bool] If true (default), workflow runs will be continually fetched,
|
|
66
66
|
# until the most recent one is found. If false, the first result is used.
|
|
@@ -71,8 +71,8 @@ module Temporal
|
|
|
71
71
|
#
|
|
72
72
|
# @return [any] Result of the workflow after being converted by the data converter.
|
|
73
73
|
#
|
|
74
|
-
# @raise [
|
|
75
|
-
# timed out. Use the {
|
|
74
|
+
# @raise [Temporalio::Error::WorkflowFailure] Workflow failed, was cancelled, was terminated, or
|
|
75
|
+
# timed out. Use the {Temporalio::Error::WorkflowFailure#cause} to see the underlying reason.
|
|
76
76
|
# @raise [StandardError] Other possible failures during result fetching.
|
|
77
77
|
def result(follow_runs: true, rpc_metadata: {}, rpc_timeout: nil)
|
|
78
78
|
client_impl.await_workflow_result(id, result_run_id, follow_runs, rpc_metadata, rpc_timeout)
|
|
@@ -81,9 +81,9 @@ module Temporal
|
|
|
81
81
|
# Get workflow details.
|
|
82
82
|
#
|
|
83
83
|
# This will get details for {#run_id} if present. To use a different run ID, create a new
|
|
84
|
-
# handle with via {
|
|
84
|
+
# handle with via {Temporalio::Client#workflow_handle}.
|
|
85
85
|
#
|
|
86
|
-
# @note Handles created as a result of {
|
|
86
|
+
# @note Handles created as a result of {Temporalio::Client#start_workflow} will describe the
|
|
87
87
|
# latest workflow with the same workflow ID even if it is unrelated to the started workflow.
|
|
88
88
|
#
|
|
89
89
|
# @param rpc_metadata [Hash<String, String>] Headers used on the RPC call.
|
|
@@ -91,9 +91,9 @@ module Temporal
|
|
|
91
91
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call. Note, this is
|
|
92
92
|
# the timeout for each history RPC call not this overall function.
|
|
93
93
|
#
|
|
94
|
-
# @return [
|
|
94
|
+
# @return [Temporalio::Workflow::ExecutionInfo] Workflow details.
|
|
95
95
|
#
|
|
96
|
-
# @raise [
|
|
96
|
+
# @raise [Temporalio::Error::RPCError] Workflow details could not be fetched.
|
|
97
97
|
def describe(rpc_metadata: {}, rpc_timeout: nil)
|
|
98
98
|
input = Interceptor::Client::DescribeWorkflowInput.new(
|
|
99
99
|
id: id,
|
|
@@ -109,9 +109,9 @@ module Temporal
|
|
|
109
109
|
#
|
|
110
110
|
# This will issue a cancellation for {#run_id} if present. This call will make sure to use the
|
|
111
111
|
# run chain starting from {#first_execution_run_id} if present. To create handles with these
|
|
112
|
-
# values, use {
|
|
112
|
+
# values, use {Temporalio::Client#workflow_handle}.
|
|
113
113
|
#
|
|
114
|
-
# @note Handles created as a result of {
|
|
114
|
+
# @note Handles created as a result of {Temporalio::Client#start_workflow} with a start signal
|
|
115
115
|
# will cancel the latest workflow with the same workflow ID even if it is unrelated to the
|
|
116
116
|
# started workflow.
|
|
117
117
|
#
|
|
@@ -120,7 +120,7 @@ module Temporal
|
|
|
120
120
|
# Keys here override client-level RPC metadata keys.
|
|
121
121
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
122
122
|
#
|
|
123
|
-
# @raise [
|
|
123
|
+
# @raise [Temporalio::Error::RPCError] Workflow could not be cancelled.
|
|
124
124
|
def cancel(reason = nil, rpc_metadata: {}, rpc_timeout: nil)
|
|
125
125
|
input = Interceptor::Client::CancelWorkflowInput.new(
|
|
126
126
|
id: id,
|
|
@@ -137,23 +137,23 @@ module Temporal
|
|
|
137
137
|
# Query the workflow.
|
|
138
138
|
#
|
|
139
139
|
# This will query for {#run_id} if present. To use a different run ID, create a new handle
|
|
140
|
-
# with via {
|
|
140
|
+
# with via {Temporalio::Client#workflow_handle}.
|
|
141
141
|
#
|
|
142
|
-
# @note Handles created as a result of {
|
|
142
|
+
# @note Handles created as a result of {Temporalio::Client#start_workflow} will query the latest
|
|
143
143
|
# workflow with the same workflow ID even if it is unrelated to the started workflow.
|
|
144
144
|
#
|
|
145
145
|
# @param query [String, Symbol] Query function or name on the workflow.
|
|
146
146
|
# @param args [any] Arguments to the query.
|
|
147
147
|
# @param reject_condition [Symbol] Condition for rejecting the query. Refer to
|
|
148
|
-
# {
|
|
148
|
+
# {Temporalio::Workflow::QueryRejectCondition} for the list of allowed values.
|
|
149
149
|
# @param rpc_metadata [Hash<String, String>] Headers used on the RPC call.
|
|
150
150
|
# Keys here override client-level RPC metadata keys.
|
|
151
151
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
152
152
|
#
|
|
153
153
|
# @return [any] Result of the query.
|
|
154
154
|
#
|
|
155
|
-
# @raise [
|
|
156
|
-
# @raise [
|
|
155
|
+
# @raise [Temporalio::Error] A query reject condition was satisfied.
|
|
156
|
+
# @raise [Temporalio::Error::RPCError] Workflow details could not be fetched.
|
|
157
157
|
def query(
|
|
158
158
|
query,
|
|
159
159
|
*args,
|
|
@@ -178,9 +178,9 @@ module Temporal
|
|
|
178
178
|
# Send a signal to the workflow.
|
|
179
179
|
#
|
|
180
180
|
# This will signal for {#run_id} if present. To use a different run ID, create a new handle
|
|
181
|
-
# with via {
|
|
181
|
+
# with via {Temporalio::Client#workflow_handle}.
|
|
182
182
|
#
|
|
183
|
-
# @note Handles created as a result of {
|
|
183
|
+
# @note Handles created as a result of {Temporalio::Client#start_workflow} will signal the
|
|
184
184
|
# latest workflow with the same workflow ID even if it is unrelated to the started workflow.
|
|
185
185
|
#
|
|
186
186
|
# @param signal [String, Symbol] Signal function or name on the workflow.
|
|
@@ -189,7 +189,7 @@ module Temporal
|
|
|
189
189
|
# Keys here override client-level RPC metadata keys.
|
|
190
190
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
191
191
|
#
|
|
192
|
-
# @return [
|
|
192
|
+
# @return [Temporalio::Error::RPCError] Workflow could not be signalled.
|
|
193
193
|
def signal(signal, *args, rpc_metadata: {}, rpc_timeout: nil)
|
|
194
194
|
input = Interceptor::Client::SignalWorkflowInput.new(
|
|
195
195
|
id: id,
|
|
@@ -208,9 +208,9 @@ module Temporal
|
|
|
208
208
|
#
|
|
209
209
|
# This will issue a termination for {#run_id} if present. This call will make sure to use the
|
|
210
210
|
# run chain starting from {#first_execution_run_id} if present. To create handles with these
|
|
211
|
-
# values, use {
|
|
211
|
+
# values, use {Temporalio::Client#workflow_handle}.
|
|
212
212
|
|
|
213
|
-
# @note Handles created as a result of {
|
|
213
|
+
# @note Handles created as a result of {Temporalio::Client#start_workflow} with a start signal
|
|
214
214
|
# will terminate the latest workflow with the same workflow ID even if it is unrelated to
|
|
215
215
|
# the started workflow.
|
|
216
216
|
#
|
|
@@ -220,7 +220,7 @@ module Temporal
|
|
|
220
220
|
# Keys here override client-level RPC metadata keys.
|
|
221
221
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
222
222
|
#
|
|
223
|
-
# @raise [
|
|
223
|
+
# @raise [Temporalio::Error::RPCError] Workflow could not be terminated.
|
|
224
224
|
def terminate(reason = nil, args = nil, rpc_metadata: {}, rpc_timeout: nil)
|
|
225
225
|
input = Interceptor::Client::TerminateWorkflowInput.new(
|
|
226
226
|
id: id,
|
|
@@ -1,33 +1,27 @@
|
|
|
1
1
|
require 'json'
|
|
2
2
|
require 'securerandom'
|
|
3
3
|
require 'socket'
|
|
4
|
-
require '
|
|
5
|
-
require '
|
|
6
|
-
require '
|
|
7
|
-
require '
|
|
8
|
-
require '
|
|
9
|
-
require '
|
|
10
|
-
require '
|
|
4
|
+
require 'temporalio/client/implementation'
|
|
5
|
+
require 'temporalio/client/workflow_handle'
|
|
6
|
+
require 'temporalio/data_converter'
|
|
7
|
+
require 'temporalio/errors'
|
|
8
|
+
require 'temporalio/failure_converter'
|
|
9
|
+
require 'temporalio/payload_converter'
|
|
10
|
+
require 'temporalio/workflow/id_reuse_policy'
|
|
11
11
|
|
|
12
|
-
module
|
|
12
|
+
module Temporalio
|
|
13
13
|
class Client
|
|
14
14
|
# @return [String] Namespace used for client calls.
|
|
15
15
|
attr_reader :namespace
|
|
16
16
|
|
|
17
17
|
# Create a Temporal client from a connection.
|
|
18
18
|
#
|
|
19
|
-
# @param connection [
|
|
19
|
+
# @param connection [Temporalio::Connection] A connection to the Temporal server.
|
|
20
20
|
# @param namespace [String] Namespace to use for client calls.
|
|
21
|
-
# @param interceptors [Array<
|
|
21
|
+
# @param interceptors [Array<Temporalio::Interceptor::Client>] List of interceptors for
|
|
22
22
|
# intercepting client calls. Executed in their original order.
|
|
23
|
-
# @param
|
|
24
|
-
#
|
|
25
|
-
# interface definition.
|
|
26
|
-
# @param payload_codecs [Array<Temporal::PayloadCodec::Base>] A list of payload codecs to
|
|
27
|
-
# transform payload protos. See {Temporal::PayloadCodec::Base} for the interface definition.
|
|
28
|
-
# @param failure_converter [Temporal::FailureConverter::Base] A custom failure converter for
|
|
29
|
-
# converting Exceptions to/from protos. See {Temporal::FailureConverter::Base} for the
|
|
30
|
-
# interface definition.
|
|
23
|
+
# @param data_converter [Temporalio::DataConverter] Data converter to use for all data conversions
|
|
24
|
+
# to/from payloads.
|
|
31
25
|
#
|
|
32
26
|
# @see https://docs.temporal.io/concepts/what-is-a-data-converter for more information on
|
|
33
27
|
# payload converters and codecs.
|
|
@@ -35,16 +29,9 @@ module Temporal
|
|
|
35
29
|
connection,
|
|
36
30
|
namespace,
|
|
37
31
|
interceptors: [],
|
|
38
|
-
|
|
39
|
-
payload_codecs: [],
|
|
40
|
-
failure_converter: Temporal::FailureConverter::DEFAULT
|
|
32
|
+
data_converter: Temporalio::DataConverter.new
|
|
41
33
|
)
|
|
42
34
|
@namespace = namespace
|
|
43
|
-
data_converter = DataConverter.new(
|
|
44
|
-
payload_converter: payload_converter,
|
|
45
|
-
payload_codecs: payload_codecs,
|
|
46
|
-
failure_converter: failure_converter,
|
|
47
|
-
)
|
|
48
35
|
@implementation = Client::Implementation.new(connection, namespace, data_converter, interceptors)
|
|
49
36
|
end
|
|
50
37
|
|
|
@@ -59,9 +46,9 @@ module Temporal
|
|
|
59
46
|
# @param run_timeout [Integer] Timeout of a single workflow run.
|
|
60
47
|
# @param task_timeout [Integer] Timeout of a single workflow task.
|
|
61
48
|
# @param id_reuse_policy [Symbol] How already-existing IDs are treated. Refer to
|
|
62
|
-
# {
|
|
63
|
-
# @param retry_policy [
|
|
64
|
-
# See {
|
|
49
|
+
# {Temporalio::Workflow::IDReusePolicy} for the list of allowed values.
|
|
50
|
+
# @param retry_policy [Temporalio::RetryPolicy] Retry policy for the workflow.
|
|
51
|
+
# See {Temporalio::RetryPolicy}.
|
|
65
52
|
# @param cron_schedule [String] See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job.
|
|
66
53
|
# @param memo [Hash<String, any>] Memo for the workflow.
|
|
67
54
|
# @param search_attributes [Hash<String, any>] Search attributes for the workflow.
|
|
@@ -73,9 +60,9 @@ module Temporal
|
|
|
73
60
|
# client-level RPC metadata keys.
|
|
74
61
|
# @param rpc_timeout [Integer] Optional RPC deadline to set for the RPC call.
|
|
75
62
|
#
|
|
76
|
-
# @return [
|
|
63
|
+
# @return [Temporalio::Client::WorkflowHandle] A workflow handle to the started/existing workflow.
|
|
77
64
|
#
|
|
78
|
-
# @raise [
|
|
65
|
+
# @raise [Temporalio::Error::RPCError] Workflow could not be started.
|
|
79
66
|
def start_workflow( # rubocop:disable Metrics/ParameterLists
|
|
80
67
|
workflow,
|
|
81
68
|
*args,
|
|
@@ -126,7 +113,7 @@ module Temporal
|
|
|
126
113
|
# in a chain. Workflows are chained when using continue-as-new, retries (as permitted by the
|
|
127
114
|
# retry policy) or cron executions.
|
|
128
115
|
#
|
|
129
|
-
# @return [
|
|
116
|
+
# @return [Temporalio::Client::WorkflowHandle] The workflow handle.
|
|
130
117
|
def workflow_handle(id, run_id: nil, first_execution_run_id: nil)
|
|
131
118
|
WorkflowHandle.new(
|
|
132
119
|
implementation,
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
class Connection
|
|
3
|
+
class RetryConfig
|
|
4
|
+
# Initial backoff interval.
|
|
5
|
+
# @default 100
|
|
6
|
+
attr_reader :initial_interval_millis
|
|
7
|
+
|
|
8
|
+
# Randomization jitter to add.
|
|
9
|
+
# @default 0.2
|
|
10
|
+
attr_reader :randomization_factor
|
|
11
|
+
|
|
12
|
+
# Backoff multiplier.
|
|
13
|
+
# @default 1.5
|
|
14
|
+
attr_reader :multiplier
|
|
15
|
+
|
|
16
|
+
# Maximum backoff interval.
|
|
17
|
+
# @default 5000
|
|
18
|
+
attr_reader :max_interval_millis
|
|
19
|
+
|
|
20
|
+
# Maximum total time (optional).
|
|
21
|
+
attr_reader :max_elapsed_time_millis
|
|
22
|
+
|
|
23
|
+
# Maximum number of retries.
|
|
24
|
+
# @default 10
|
|
25
|
+
attr_reader :max_retries
|
|
26
|
+
|
|
27
|
+
def initialize(
|
|
28
|
+
initial_interval_millis: nil,
|
|
29
|
+
randomization_factor: nil,
|
|
30
|
+
multiplier: nil,
|
|
31
|
+
max_interval_millis: nil,
|
|
32
|
+
max_elapsed_time_millis: nil,
|
|
33
|
+
max_retries: nil
|
|
34
|
+
)
|
|
35
|
+
@initial_interval_millis = initial_interval_millis || 100
|
|
36
|
+
@randomization_factor = randomization_factor || 0.2
|
|
37
|
+
@multiplier = multiplier || 1.5
|
|
38
|
+
@max_interval_millis = max_interval_millis || 5_000
|
|
39
|
+
@max_elapsed_time_millis = max_elapsed_time_millis
|
|
40
|
+
@max_retries = max_retries || 10
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
class Connection
|
|
3
|
+
# @abstract A superclass for defining services to interact with the Temporal API
|
|
4
|
+
class Service
|
|
5
|
+
# @api private
|
|
6
|
+
def initialize(core_connection, service)
|
|
7
|
+
@core_connection = core_connection
|
|
8
|
+
@service = service
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :core_connection, :service
|
|
14
|
+
|
|
15
|
+
def call(rpc, bytes, metadata, timeout)
|
|
16
|
+
core_connection.call(rpc, service, bytes, metadata, timeout)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'temporal/api/testservice/v1/request_response_pb'
|
|
2
|
+
require 'temporalio/connection/service'
|
|
3
|
+
|
|
4
|
+
module Temporalio
|
|
5
|
+
class Connection
|
|
6
|
+
# A class for making TestService RPCs
|
|
7
|
+
#
|
|
8
|
+
# This is normally accessed via {Temoralio::Connection#test_service}.
|
|
9
|
+
class TestService < Service
|
|
10
|
+
# @api private
|
|
11
|
+
def initialize(core_connection)
|
|
12
|
+
super(core_connection, :test_service)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @param request [Temporalio::Api::TestService::V1::LockTimeSkippingRequest]
|
|
16
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
17
|
+
# Keys here override client-level RPC metadata keys.
|
|
18
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
19
|
+
#
|
|
20
|
+
# @return [Temporalio::Api::TestService::V1::LockTimeSkippingResponse]
|
|
21
|
+
def lock_time_skipping(request, metadata: {}, timeout: nil)
|
|
22
|
+
encoded = Temporalio::Api::TestService::V1::LockTimeSkippingRequest.encode(request)
|
|
23
|
+
response = call(:lock_time_skipping, encoded, metadata, timeout)
|
|
24
|
+
|
|
25
|
+
Temporalio::Api::TestService::V1::LockTimeSkippingResponse.decode(response)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param request [Temporalio::Api::TestService::V1::UnlockTimeSkippingRequest]
|
|
29
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
30
|
+
# Keys here override client-level RPC metadata keys.
|
|
31
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
32
|
+
#
|
|
33
|
+
# @return [Temporalio::Api::TestService::V1::UnlockTimeSkippingResponse]
|
|
34
|
+
def unlock_time_skipping(request, metadata: {}, timeout: nil)
|
|
35
|
+
encoded = Temporalio::Api::TestService::V1::UnlockTimeSkippingRequest.encode(request)
|
|
36
|
+
response = call(:unlock_time_skipping, encoded, metadata, timeout)
|
|
37
|
+
|
|
38
|
+
Temporalio::Api::TestService::V1::UnlockTimeSkippingResponse.decode(response)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @param request [Temporalio::Api::TestService::V1::SleepRequest]
|
|
42
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
43
|
+
# Keys here override client-level RPC metadata keys.
|
|
44
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
45
|
+
#
|
|
46
|
+
# @return [Temporalio::Api::TestService::V1::SleepResponse]
|
|
47
|
+
def sleep(request, metadata: {}, timeout: nil)
|
|
48
|
+
encoded = Temporalio::Api::TestService::V1::SleepRequest.encode(request)
|
|
49
|
+
response = call(:sleep, encoded, metadata, timeout)
|
|
50
|
+
|
|
51
|
+
Temporalio::Api::TestService::V1::SleepResponse.decode(response)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @param request [Temporalio::Api::TestService::V1::SleepUntilRequest]
|
|
55
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
56
|
+
# Keys here override client-level RPC metadata keys.
|
|
57
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
58
|
+
#
|
|
59
|
+
# @return [Temporalio::Api::TestService::V1::SleepResponse]
|
|
60
|
+
def sleep_until(request, metadata: {}, timeout: nil)
|
|
61
|
+
encoded = Temporalio::Api::TestService::V1::SleepUntilRequest.encode(request)
|
|
62
|
+
response = call(:sleep_until, encoded, metadata, timeout)
|
|
63
|
+
|
|
64
|
+
Temporalio::Api::TestService::V1::SleepResponse.decode(response)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @param request [Temporalio::Api::TestService::V1::SleepRequest]
|
|
68
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
69
|
+
# Keys here override client-level RPC metadata keys.
|
|
70
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
71
|
+
#
|
|
72
|
+
# @return [Temporalio::Api::TestService::V1::SleepResponse]
|
|
73
|
+
def unlock_time_skipping_with_sleep(request, metadata: {}, timeout: nil)
|
|
74
|
+
encoded = Temporalio::Api::TestService::V1::SleepRequest.encode(request)
|
|
75
|
+
response = call(:unlock_time_skipping_with_sleep, encoded, metadata, timeout)
|
|
76
|
+
|
|
77
|
+
Temporalio::Api::TestService::V1::SleepResponse.decode(response)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @param metadata [Hash<String, String>] Headers used on the RPC call.
|
|
81
|
+
# Keys here override client-level RPC metadata keys.
|
|
82
|
+
# @param timeout [Integer] Optional RPC deadline to set for each RPC call.
|
|
83
|
+
#
|
|
84
|
+
# @return [Temporalio::Api::TestService::V1::GetCurrentTimeResponse]
|
|
85
|
+
def get_current_time(metadata: {}, timeout: nil)
|
|
86
|
+
response = call(:get_current_time, '', metadata, timeout)
|
|
87
|
+
|
|
88
|
+
Temporalio::Api::TestService::V1::GetCurrentTimeResponse.decode(response)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Temporalio
|
|
2
|
+
class Connection
|
|
3
|
+
class TlsOptions
|
|
4
|
+
# Root CA certificate used by the server. If not set, the server's certificate will be
|
|
5
|
+
# validated against the operating system's root certificates.
|
|
6
|
+
#
|
|
7
|
+
# Leave unset for Temporal Cloud.
|
|
8
|
+
attr_reader :server_root_ca_cert
|
|
9
|
+
|
|
10
|
+
# Client certificate used to authenticate with the server. If set, a corresponding
|
|
11
|
+
# `client_private_key` must be provided.
|
|
12
|
+
#
|
|
13
|
+
# @default do not use client side authentication.
|
|
14
|
+
attr_reader :client_cert
|
|
15
|
+
|
|
16
|
+
# Client private key used to authenticate with the server. Required if `client_cert` is set.
|
|
17
|
+
attr_reader :client_private_key
|
|
18
|
+
|
|
19
|
+
# Overrides the target name used for validation of the server SSL certificate. If not
|
|
20
|
+
# specified, the server certificate will be checked against the host part of the connection
|
|
21
|
+
# target address. This _should_ be used for testing only.
|
|
22
|
+
#
|
|
23
|
+
# Leave unset for Temporal Cloud.
|
|
24
|
+
#
|
|
25
|
+
# @default Validate the server certificate against the host part of the connection target address.
|
|
26
|
+
attr_reader :server_name_override
|
|
27
|
+
|
|
28
|
+
# @param [String?] server_root_ca_cert Root CA certificate used by the server.
|
|
29
|
+
# @param [String?] client_cert Client certificate used to authenticate with the server.
|
|
30
|
+
# @param [String?] client_private_key Client private key used to authenticate with the server.
|
|
31
|
+
# @param [String?] server_name_override Overrides the target name used for validation of the
|
|
32
|
+
# server SSL certificate.
|
|
33
|
+
# @raise [ArgumentError] if `client_cert` and `client_private_key` are not both set or both unset
|
|
34
|
+
def initialize(
|
|
35
|
+
server_root_ca_cert: nil,
|
|
36
|
+
client_cert: nil,
|
|
37
|
+
client_private_key: nil,
|
|
38
|
+
server_name_override: nil
|
|
39
|
+
)
|
|
40
|
+
if (client_cert && !client_private_key) || (!client_cert && client_private_key)
|
|
41
|
+
raise ArgumentError, 'client_cert and client_private_key must be either both set or both unset'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
@server_root_ca_cert = server_root_ca_cert
|
|
45
|
+
@client_cert = client_cert
|
|
46
|
+
@client_private_key = client_private_key
|
|
47
|
+
@server_name_override = server_name_override
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|