temporalio 0.0.1 → 0.0.2

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +175 -4
  3. data/bridge/Cargo.lock +44 -21
  4. data/bridge/Cargo.toml +1 -0
  5. data/bridge/sdk-core/Cargo.toml +1 -1
  6. data/bridge/sdk-core/README.md +1 -4
  7. data/bridge/sdk-core/client/Cargo.toml +1 -1
  8. data/bridge/sdk-core/client/src/lib.rs +12 -20
  9. data/bridge/sdk-core/client/src/raw.rs +9 -8
  10. data/bridge/sdk-core/client/src/retry.rs +100 -23
  11. data/bridge/sdk-core/core/Cargo.toml +7 -7
  12. data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
  13. data/bridge/sdk-core/core/src/abstractions.rs +22 -22
  14. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +146 -43
  15. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +419 -9
  16. data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -89
  17. data/bridge/sdk-core/core/src/core_tests/workers.rs +2 -2
  18. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
  19. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +47 -27
  20. data/bridge/sdk-core/core/src/lib.rs +139 -32
  21. data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
  22. data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
  23. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  24. data/bridge/sdk-core/core/src/telemetry/metrics.rs +184 -139
  25. data/bridge/sdk-core/core/src/telemetry/mod.rs +310 -315
  26. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +4 -3
  27. data/bridge/sdk-core/core/src/test_help/mod.rs +23 -9
  28. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +12 -6
  29. data/bridge/sdk-core/core/src/worker/activities.rs +40 -23
  30. data/bridge/sdk-core/core/src/worker/client/mocks.rs +1 -1
  31. data/bridge/sdk-core/core/src/worker/client.rs +30 -4
  32. data/bridge/sdk-core/core/src/worker/mod.rs +23 -19
  33. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +10 -19
  34. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +99 -25
  35. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +1 -5
  36. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +1 -5
  37. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +1 -5
  38. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +3 -5
  39. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +1 -5
  40. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +2 -6
  41. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +1 -5
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +24 -22
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +12 -38
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +178 -0
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +1 -5
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +1 -5
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +1 -5
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +8 -2
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +1 -5
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +1 -1
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +233 -217
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +1 -6
  53. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +4 -4
  54. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +13 -5
  55. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +86 -29
  56. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +2 -2
  57. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +56 -11
  58. data/bridge/sdk-core/core-api/Cargo.toml +4 -3
  59. data/bridge/sdk-core/core-api/src/lib.rs +1 -43
  60. data/bridge/sdk-core/core-api/src/telemetry.rs +147 -0
  61. data/bridge/sdk-core/core-api/src/worker.rs +13 -0
  62. data/bridge/sdk-core/etc/deps.svg +115 -140
  63. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  64. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
  65. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  66. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  67. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
  68. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  69. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  70. data/bridge/sdk-core/protos/api_upstream/{temporal/api/update/v1/message.proto → build/tools.go} +6 -23
  71. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  72. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
  73. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +20 -19
  74. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +2 -2
  75. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  76. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -4
  77. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  78. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +5 -3
  79. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +23 -2
  80. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/{cluster.proto → interaction_type.proto} +10 -11
  81. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  82. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  83. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  84. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  85. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  86. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +2 -13
  87. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  88. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  89. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  90. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  91. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +26 -19
  92. data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +87 -0
  93. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +2 -2
  94. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +21 -61
  95. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
  96. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  97. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  98. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
  99. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
  100. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  101. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
  102. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +60 -16
  103. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +17 -3
  104. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +2 -0
  105. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +8 -1
  106. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  107. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  108. data/bridge/sdk-core/sdk/Cargo.toml +2 -2
  109. data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
  110. data/bridge/sdk-core/sdk/src/lib.rs +7 -5
  111. data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
  112. data/bridge/sdk-core/sdk/src/workflow_future.rs +3 -7
  113. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +1 -1
  114. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -1
  115. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +65 -18
  116. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +22 -22
  117. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +104 -44
  118. data/bridge/sdk-core/test-utils/Cargo.toml +2 -1
  119. data/bridge/sdk-core/test-utils/src/lib.rs +81 -29
  120. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +5 -2
  121. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +37 -0
  122. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -13
  123. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +167 -13
  124. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +53 -0
  125. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +106 -20
  126. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +18 -8
  127. data/bridge/sdk-core/tests/main.rs +6 -4
  128. data/bridge/src/connection.rs +81 -62
  129. data/bridge/src/lib.rs +92 -33
  130. data/bridge/src/runtime.rs +9 -2
  131. data/bridge/src/worker.rs +53 -2
  132. data/lib/bridge.so +0 -0
  133. data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
  134. data/lib/gen/temporal/api/command/v1/message_pb.rb +17 -9
  135. data/lib/gen/temporal/api/common/v1/message_pb.rb +1 -1
  136. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
  137. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -1
  138. data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
  139. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +3 -2
  140. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +7 -1
  141. data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +25 -0
  142. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
  143. data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
  144. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
  145. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
  146. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
  147. data/lib/gen/temporal/api/enums/v1/update_pb.rb +1 -6
  148. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
  149. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
  150. data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
  151. data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
  152. data/lib/gen/temporal/api/history/v1/message_pb.rb +19 -18
  153. data/lib/gen/temporal/api/interaction/v1/message_pb.rb +49 -0
  154. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +1 -1
  155. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +11 -51
  156. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
  157. data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
  158. data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
  159. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
  160. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
  161. data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
  162. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
  163. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +27 -10
  164. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
  165. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +1 -0
  166. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +5 -1
  167. data/lib/temporalio/activity/context.rb +97 -0
  168. data/lib/temporalio/activity/info.rb +67 -0
  169. data/lib/temporalio/activity.rb +85 -0
  170. data/lib/temporalio/bridge/error.rb +8 -0
  171. data/lib/temporalio/bridge.rb +14 -0
  172. data/lib/{temporal → temporalio}/client/implementation.rb +49 -48
  173. data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
  174. data/lib/{temporal → temporalio}/client.rb +19 -32
  175. data/lib/{temporal → temporalio}/connection.rb +238 -223
  176. data/lib/{temporal → temporalio}/data_converter.rb +76 -35
  177. data/lib/{temporal → temporalio}/error/failure.rb +6 -6
  178. data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
  179. data/lib/{temporal → temporalio}/errors.rb +19 -1
  180. data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
  181. data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
  182. data/lib/temporalio/failure_converter.rb +7 -0
  183. data/lib/{temporal → temporalio}/interceptor/chain.rb +2 -1
  184. data/lib/{temporal → temporalio}/interceptor/client.rb +22 -1
  185. data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
  186. data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
  187. data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
  188. data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
  189. data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
  190. data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
  191. data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
  192. data/lib/temporalio/payload_converter.rb +14 -0
  193. data/lib/{temporal → temporalio}/retry_policy.rb +4 -4
  194. data/lib/{temporal → temporalio}/retry_state.rb +1 -1
  195. data/lib/temporalio/runtime.rb +25 -0
  196. data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
  197. data/lib/temporalio/version.rb +3 -0
  198. data/lib/temporalio/worker/activity_runner.rb +92 -0
  199. data/lib/temporalio/worker/activity_worker.rb +138 -0
  200. data/lib/temporalio/worker/reactor.rb +46 -0
  201. data/lib/temporalio/worker/runner.rb +63 -0
  202. data/lib/temporalio/worker/sync_worker.rb +88 -0
  203. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  204. data/lib/temporalio/worker.rb +198 -0
  205. data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
  206. data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
  207. data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
  208. data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
  209. data/lib/temporalio.rb +12 -3
  210. data/temporalio.gemspec +7 -3
  211. metadata +79 -56
  212. data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
  213. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  214. data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
  215. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
  216. data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
  217. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
  218. data/bridge/sdk-core/core/src/log_export.rs +0 -62
  219. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
  220. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
  221. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
  222. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  223. data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
  224. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
  225. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
  226. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -26
  227. data/lib/temporal/bridge.rb +0 -14
  228. data/lib/temporal/failure_converter.rb +0 -8
  229. data/lib/temporal/payload_converter.rb +0 -14
  230. data/lib/temporal/runtime.rb +0 -22
  231. data/lib/temporal/version.rb +0 -3
  232. data/lib/temporal.rb +0 -8
@@ -1,30 +1,60 @@
1
1
  require 'temporal/api/common/v1/message_pb'
2
- require 'temporal/errors'
2
+ require 'temporalio/errors'
3
+ require 'temporalio/failure_converter'
4
+ require 'temporalio/payload_converter'
3
5
 
4
- module Temporal
6
+ module Temporalio
5
7
  class DataConverter
6
- class MissingPayload < Temporal::Error; end
7
-
8
- def initialize(payload_converter:, payload_codecs:, failure_converter:)
8
+ class MissingPayload < Temporalio::Error; end
9
+
10
+ # Initialize a new data converter with optional payload converter, codecs and failure converter.
11
+ #
12
+ # @param payload_converter [Temporalio::PayloadConverter::Base] A custom payload converter for
13
+ # converting Ruby values to/from protos. See {Temporalio::PayloadConverter::Base} for the
14
+ # interface definition.
15
+ # @param payload_codecs [Array<Temporalio::PayloadCodec::Base>] A list of payload codecs to
16
+ # transform payload protos. See {Temporalio::PayloadCodec::Base} for the interface definition.
17
+ # @param failure_converter [Temporalio::FailureConverter::Base] A custom failure converter for
18
+ # converting Exceptions to/from protos. See {Temporalio::FailureConverter::Base} for the
19
+ # interface definition.
20
+ #
21
+ # @see https://docs.temporal.io/concepts/what-is-a-data-converter for more information on
22
+ # payload converters and codecs.
23
+ def initialize(
24
+ payload_converter: Temporalio::PayloadConverter::DEFAULT,
25
+ payload_codecs: [],
26
+ failure_converter: Temporalio::FailureConverter::DEFAULT
27
+ )
9
28
  @payload_converter = payload_converter
10
29
  @payload_codecs = payload_codecs
11
30
  @failure_converter = failure_converter
12
31
  end
13
32
 
33
+ def to_payload(value)
34
+ payload = value_to_payload(value)
35
+ encoded_payload = encode([payload]).first
36
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload
37
+
38
+ encoded_payload
39
+ end
40
+
41
+ def to_payload_array(data)
42
+ return [] if data.nil? || Array(data).empty?
43
+
44
+ payloads = Array(data).map { |value| value_to_payload(value) }
45
+ encode(payloads)
46
+ end
47
+
14
48
  def to_payloads(data)
15
49
  return if data.nil? || Array(data).empty?
16
50
 
17
- payloads = Array(data).map { |value| to_payload(value) }
18
- Temporal::Api::Common::V1::Payloads.new(payloads: encode(payloads))
51
+ payloads = Array(data).map { |value| value_to_payload(value) }
52
+ Temporalio::Api::Common::V1::Payloads.new(payloads: encode(payloads))
19
53
  end
20
54
 
21
55
  def to_payload_map(data)
22
56
  data.to_h do |key, value|
23
- payload = to_payload(value)
24
- encoded_payload = encode([payload]).first
25
- raise MissingPayload, 'Payload Codecs returned no payloads' unless encoded_payload
26
-
27
- [key.to_s, encoded_payload]
57
+ [key.to_s, to_payload(value)]
28
58
  end
29
59
  end
30
60
 
@@ -33,25 +63,36 @@ module Temporal
33
63
  encode_failure(failure)
34
64
  end
35
65
 
66
+ def from_payload(payload)
67
+ decoded_payload = decode([payload]).first
68
+ raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload
69
+
70
+ payload_to_value(decoded_payload)
71
+ end
72
+
73
+ def from_payload_array(payloads)
74
+ return [] if payloads.empty?
75
+
76
+ decode(payloads)
77
+ .map { |payload| payload_to_value(payload) }
78
+ end
79
+
36
80
  def from_payloads(payloads)
37
81
  return unless payloads
38
82
 
39
83
  decode(payloads.payloads)
40
- .map { |payload| from_payload(payload) }
84
+ .map { |payload| payload_to_value(payload) }
41
85
  end
42
86
 
43
87
  def from_payload_map(payload_map)
44
88
  return unless payload_map
45
89
 
46
90
  # Protobuf's Hash isn't compatible with the native Hash, ignore rubocop here
47
- # rubocop:disable Style/MapToHash
91
+ # rubocop:disable Style/MapToHash, Style/HashTransformValues
48
92
  payload_map.map do |key, payload|
49
- decoded_payload = decode([payload]).first
50
- raise MissingPayload, 'Payload Codecs returned no payloads' unless decoded_payload
51
-
52
- [key, from_payload(decoded_payload)]
93
+ [key, from_payload(payload)]
53
94
  end.to_h
54
- # rubocop:enable Style/MapToHash
95
+ # rubocop:enable Style/MapToHash, Style/HashTransformValues
55
96
  end
56
97
 
57
98
  def from_failure(failure)
@@ -65,6 +106,14 @@ module Temporal
65
106
 
66
107
  attr_reader :payload_converter, :payload_codecs, :failure_converter
67
108
 
109
+ def value_to_payload(value)
110
+ payload_converter.to_payload(value)
111
+ end
112
+
113
+ def payload_to_value(payload)
114
+ payload_converter.from_payload(payload)
115
+ end
116
+
68
117
  def encode(payloads)
69
118
  return [] unless payloads
70
119
 
@@ -85,14 +134,6 @@ module Temporal
85
134
  payloads
86
135
  end
87
136
 
88
- def to_payload(data)
89
- payload_converter.to_payload(data)
90
- end
91
-
92
- def from_payload(payload)
93
- payload_converter.from_payload(payload)
94
- end
95
-
96
137
  def encode_failure(failure)
97
138
  failure = failure.dup
98
139
 
@@ -100,19 +141,19 @@ module Temporal
100
141
  failure.cause = failure.cause ? encode_failure(failure.cause) : nil
101
142
 
102
143
  if failure.application_failure_info
103
- failure.application_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
144
+ failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
104
145
  payloads: encode(failure.application_failure_info.details&.payloads).to_a,
105
146
  )
106
147
  elsif failure.timeout_failure_info
107
- failure.timeout_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
148
+ failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
108
149
  payloads: encode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
109
150
  )
110
151
  elsif failure.canceled_failure_info
111
- failure.canceled_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
152
+ failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
112
153
  payloads: encode(failure.canceled_failure_info.details&.payloads).to_a,
113
154
  )
114
155
  elsif failure.reset_workflow_failure_info
115
- failure.reset_workflow_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
156
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
116
157
  payloads: encode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
117
158
  )
118
159
  end
@@ -127,19 +168,19 @@ module Temporal
127
168
  failure.cause = failure.cause ? decode_failure(failure.cause) : nil
128
169
 
129
170
  if failure.application_failure_info
130
- failure.application_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
171
+ failure.application_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
131
172
  payloads: decode(failure.application_failure_info.details&.payloads).to_a,
132
173
  )
133
174
  elsif failure.timeout_failure_info
134
- failure.timeout_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
175
+ failure.timeout_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
135
176
  payloads: decode(failure.timeout_failure_info.last_heartbeat_details&.payloads).to_a,
136
177
  )
137
178
  elsif failure.canceled_failure_info
138
- failure.canceled_failure_info.details = Temporal::Api::Common::V1::Payloads.new(
179
+ failure.canceled_failure_info.details = Temporalio::Api::Common::V1::Payloads.new(
139
180
  payloads: decode(failure.canceled_failure_info.details&.payloads).to_a,
140
181
  )
141
182
  elsif failure.reset_workflow_failure_info
142
- failure.reset_workflow_failure_info.last_heartbeat_details = Temporal::Api::Common::V1::Payloads.new(
183
+ failure.reset_workflow_failure_info.last_heartbeat_details = Temporalio::Api::Common::V1::Payloads.new(
143
184
  payloads: decode(failure.reset_workflow_failure_info.last_heartbeat_details&.payloads).to_a,
144
185
  )
145
186
  end
@@ -1,11 +1,11 @@
1
1
  # TODO: Figure out the hierarchy
2
- require 'temporal/errors'
2
+ require 'temporalio/errors'
3
3
 
4
- module Temporal
4
+ module Temporalio
5
5
  class Error
6
6
  # Base for runtime failures during workflow/activity execution.
7
7
  class Failure < Error
8
- # @return [Temporal::Api::Failure::V1::Failure, nil] Original proto failure
8
+ # @return [Temporalio::Api::Failure::V1::Failure, nil] Original proto failure
9
9
  attr_reader :raw
10
10
 
11
11
  def initialize(message, raw: nil, cause: nil)
@@ -46,7 +46,7 @@ module Temporal
46
46
 
47
47
  # Error raised on workflow/activity timeout.
48
48
  class TimeoutError < Failure
49
- # @return [Symbol] Type of timeout error. Refer to {Temporal::TimeoutType}.
49
+ # @return [Symbol] Type of timeout error. Refer to {Temporalio::TimeoutType}.
50
50
  attr_reader :type
51
51
 
52
52
  # @return [Array<any>] Last heartbeat details if this is for an activity heartbeat.
@@ -119,7 +119,7 @@ module Temporal
119
119
  # @return [String] Activity ID for this error.
120
120
  attr_reader :activity_id
121
121
 
122
- # @return [Symbol] Retry state for this error. Refer to {Temporal::RetryState}.
122
+ # @return [Symbol] Retry state for this error. Refer to {Temporalio::RetryState}.
123
123
  attr_reader :retry_state
124
124
 
125
125
  def initialize(
@@ -164,7 +164,7 @@ module Temporal
164
164
  # @return [Integer] Started event ID for this error.
165
165
  attr_reader :started_event_id
166
166
 
167
- # @return [Symbol] Retry state for this error. Refer to {Temporal::RetryState}.
167
+ # @return [Symbol] Retry state for this error. Refer to {Temporalio::RetryState}.
168
168
  attr_reader :retry_state
169
169
 
170
170
  def initialize(
@@ -1,9 +1,11 @@
1
- require 'temporal/errors'
1
+ require 'temporalio/errors'
2
2
 
3
- module Temporal
3
+ module Temporalio
4
4
  class Error
5
5
  # Used as a wrapper to perserve failure hierarchy in nested calls
6
6
  # i.e. WorkflowFailure(ActivityError(WorkflowFailure(CancelledError)))
7
+ #
8
+ # @api private
7
9
  class WorkflowFailure < Error
8
10
  attr_reader :cause
9
11
 
@@ -1,4 +1,4 @@
1
- module Temporal
1
+ module Temporalio
2
2
  # Superclass for all Temporal errors
3
3
  class Error < StandardError
4
4
  # Superclass for RPC and proto related errors
@@ -18,5 +18,23 @@ module Temporal
18
18
  @status = status
19
19
  end
20
20
  end
21
+
22
+ # Superclass for internal errors
23
+ class Internal < Error; end
24
+
25
+ class WorkerShutdown < Internal; end
26
+
27
+ # This error is used within the SDK to communicate Activity cancellations
28
+ # (and whether it was requested by server or not)
29
+ class ActivityCancelled < Internal
30
+ def initialize(reason, by_request)
31
+ super(reason)
32
+ @by_request = by_request
33
+ end
34
+
35
+ def by_request?
36
+ @by_request
37
+ end
38
+ end
21
39
  end
22
40
  end
@@ -1,21 +1,21 @@
1
- module Temporal
1
+ module Temporalio
2
2
  module FailureConverter
3
3
  # @abstract Use this Interface for implementing your failure converter.
4
4
  class Base
5
5
  # Convert an Error object to a proto Failure.
6
6
  #
7
7
  # @param _error [Exception] An Error to be converter.
8
- # @param _payload_converter [Temporal::PayloadConverter::Base] A payload converter.
8
+ # @param _payload_converter [Temporalio::PayloadConverter::Base] A payload converter.
9
9
  #
10
- # @return [Temporal::Api::Failure::V1::Failure]
10
+ # @return [Temporalio::Api::Failure::V1::Failure]
11
11
  def to_failure(_error, _payload_converter)
12
12
  raise NoMethodError, 'must implement #to_failure'
13
13
  end
14
14
 
15
15
  # Convert an proto Failure object to an Error.
16
16
  #
17
- # @param _failure [Temporal::Api::Failure::V1::Failure] A proto Failure to be converted.
18
- # @param _payload_converter [Temporal::PayloadConverter::Base] A payload converter.
17
+ # @param _failure [Temporalio::Api::Failure::V1::Failure] A proto Failure to be converted.
18
+ # @param _payload_converter [Temporalio::PayloadConverter::Base] A payload converter.
19
19
  #
20
20
  # @return [Exception]
21
21
  def from_failure(_failure, _payload_converter)
@@ -1,12 +1,17 @@
1
1
  require 'temporal/api/common/v1/message_pb'
2
2
  require 'temporal/api/failure/v1/message_pb'
3
- require 'temporal/error/failure'
4
- require 'temporal/failure_converter/base'
5
- require 'temporal/retry_state'
6
- require 'temporal/timeout_type'
3
+ require 'temporalio/error/failure'
4
+ require 'temporalio/failure_converter/base'
5
+ require 'temporalio/retry_state'
6
+ require 'temporalio/timeout_type'
7
7
 
8
- module Temporal
8
+ module Temporalio
9
9
  module FailureConverter
10
+ # A default implementation of a FailureConverter.
11
+ #
12
+ # Use {Temporalio::DataConverter} for the set of helper method for interaction with converters.
13
+ #
14
+ # @api private
10
15
  class Basic < Base
11
16
  def initialize(encode_common_attributes: false)
12
17
  super()
@@ -15,25 +20,25 @@ module Temporal
15
20
  end
16
21
 
17
22
  def to_failure(error, payload_converter)
18
- return error.raw if error.is_a?(Temporal::Error::Failure) && error.raw
23
+ return error.raw if error.is_a?(Temporalio::Error::Failure) && error.raw
19
24
 
20
25
  failure =
21
26
  case error
22
- when Temporal::Error::ApplicationError
27
+ when Temporalio::Error::ApplicationError
23
28
  to_application_failure(error, payload_converter)
24
- when Temporal::Error::TimeoutError
29
+ when Temporalio::Error::TimeoutError
25
30
  to_timeout_failure(error, payload_converter)
26
- when Temporal::Error::CancelledError
31
+ when Temporalio::Error::CancelledError
27
32
  to_cancelled_failure(error, payload_converter)
28
- when Temporal::Error::TerminatedError
33
+ when Temporalio::Error::TerminatedError
29
34
  to_terminated_failure(error, payload_converter)
30
- when Temporal::Error::ServerError
35
+ when Temporalio::Error::ServerError
31
36
  to_server_failure(error, payload_converter)
32
- when Temporal::Error::ResetWorkflowError
37
+ when Temporalio::Error::ResetWorkflowError
33
38
  to_reset_workflow_failure(error, payload_converter)
34
- when Temporal::Error::ActivityError
39
+ when Temporalio::Error::ActivityError
35
40
  to_activity_failure(error, payload_converter)
36
- when Temporal::Error::ChildWorkflowError
41
+ when Temporalio::Error::ChildWorkflowError
37
42
  to_child_workflow_execution_failure(error, payload_converter)
38
43
  else
39
44
  to_generic_failure(error, payload_converter)
@@ -41,7 +46,8 @@ module Temporal
41
46
 
42
47
  failure.message = error.message
43
48
  failure.stack_trace = error.backtrace&.join("\n") || ''
44
- failure.cause = to_failure(error.cause, payload_converter) if error.cause
49
+ # RBS: StandardError fallback is only needed to satisfy steep - https://github.com/soutaro/steep/issues/477
50
+ failure.cause = to_failure(error.cause || StandardError.new, payload_converter) if error.cause
45
51
 
46
52
  if encode_common_attributes?
47
53
  failure.encoded_attributes = payload_converter.to_payload(
@@ -102,7 +108,7 @@ module Temporal
102
108
  return if data.nil? || Array(data).empty?
103
109
 
104
110
  payloads = Array(data).map { |value| payload_converter.to_payload(value) }
105
- Temporal::Api::Common::V1::Payloads.new(payloads: payloads)
111
+ Temporalio::Api::Common::V1::Payloads.new(payloads: payloads)
106
112
  end
107
113
 
108
114
  def from_payloads(payloads, payload_converter)
@@ -130,8 +136,8 @@ module Temporal
130
136
  end
131
137
 
132
138
  def to_application_failure(error, payload_converter)
133
- Temporal::Api::Failure::V1::Failure.new(
134
- application_failure_info: Temporal::Api::Failure::V1::ApplicationFailureInfo.new(
139
+ Temporalio::Api::Failure::V1::Failure.new(
140
+ application_failure_info: Temporalio::Api::Failure::V1::ApplicationFailureInfo.new(
135
141
  type: error.type,
136
142
  non_retryable: error.non_retryable,
137
143
  details: to_payloads(error.details, payload_converter),
@@ -140,84 +146,84 @@ module Temporal
140
146
  end
141
147
 
142
148
  def to_timeout_failure(error, payload_converter)
143
- Temporal::Api::Failure::V1::Failure.new(
144
- timeout_failure_info: Temporal::Api::Failure::V1::TimeoutFailureInfo.new(
145
- timeout_type: Temporal::TimeoutType.to_raw(error.type),
149
+ Temporalio::Api::Failure::V1::Failure.new(
150
+ timeout_failure_info: Temporalio::Api::Failure::V1::TimeoutFailureInfo.new(
151
+ timeout_type: Temporalio::TimeoutType.to_raw(error.type),
146
152
  last_heartbeat_details: to_payloads(error.last_heartbeat_details, payload_converter),
147
153
  ),
148
154
  )
149
155
  end
150
156
 
151
157
  def to_cancelled_failure(error, payload_converter)
152
- Temporal::Api::Failure::V1::Failure.new(
153
- canceled_failure_info: Temporal::Api::Failure::V1::CanceledFailureInfo.new(
158
+ Temporalio::Api::Failure::V1::Failure.new(
159
+ canceled_failure_info: Temporalio::Api::Failure::V1::CanceledFailureInfo.new(
154
160
  details: to_payloads(error.details, payload_converter),
155
161
  ),
156
162
  )
157
163
  end
158
164
 
159
165
  def to_terminated_failure(_error, _payload_converter)
160
- Temporal::Api::Failure::V1::Failure.new(
161
- terminated_failure_info: Temporal::Api::Failure::V1::TerminatedFailureInfo.new,
166
+ Temporalio::Api::Failure::V1::Failure.new(
167
+ terminated_failure_info: Temporalio::Api::Failure::V1::TerminatedFailureInfo.new,
162
168
  )
163
169
  end
164
170
 
165
171
  def to_server_failure(error, _payload_converter)
166
- Temporal::Api::Failure::V1::Failure.new(
167
- server_failure_info: Temporal::Api::Failure::V1::ServerFailureInfo.new(
172
+ Temporalio::Api::Failure::V1::Failure.new(
173
+ server_failure_info: Temporalio::Api::Failure::V1::ServerFailureInfo.new(
168
174
  non_retryable: error.non_retryable,
169
175
  ),
170
176
  )
171
177
  end
172
178
 
173
179
  def to_reset_workflow_failure(error, payload_converter)
174
- Temporal::Api::Failure::V1::Failure.new(
175
- reset_workflow_failure_info: Temporal::Api::Failure::V1::ResetWorkflowFailureInfo.new(
180
+ Temporalio::Api::Failure::V1::Failure.new(
181
+ reset_workflow_failure_info: Temporalio::Api::Failure::V1::ResetWorkflowFailureInfo.new(
176
182
  last_heartbeat_details: to_payloads(error.last_heartbeat_details, payload_converter),
177
183
  ),
178
184
  )
179
185
  end
180
186
 
181
187
  def to_activity_failure(error, _payload_converter)
182
- Temporal::Api::Failure::V1::Failure.new(
183
- activity_failure_info: Temporal::Api::Failure::V1::ActivityFailureInfo.new(
188
+ Temporalio::Api::Failure::V1::Failure.new(
189
+ activity_failure_info: Temporalio::Api::Failure::V1::ActivityFailureInfo.new(
184
190
  scheduled_event_id: error.scheduled_event_id,
185
191
  started_event_id: error.started_event_id,
186
192
  identity: error.identity,
187
- activity_type: Temporal::Api::Common::V1::ActivityType.new(name: error.activity_name || ''),
193
+ activity_type: Temporalio::Api::Common::V1::ActivityType.new(name: error.activity_name || ''),
188
194
  activity_id: error.activity_id,
189
- retry_state: Temporal::RetryState.to_raw(error.retry_state),
195
+ retry_state: Temporalio::RetryState.to_raw(error.retry_state),
190
196
  ),
191
197
  )
192
198
  end
193
199
 
194
200
  def to_child_workflow_execution_failure(error, _payload_converter)
195
- Temporal::Api::Failure::V1::Failure.new(
201
+ Temporalio::Api::Failure::V1::Failure.new(
196
202
  child_workflow_execution_failure_info:
197
- Temporal::Api::Failure::V1::ChildWorkflowExecutionFailureInfo.new(
203
+ Temporalio::Api::Failure::V1::ChildWorkflowExecutionFailureInfo.new(
198
204
  namespace: error.namespace,
199
- workflow_execution: Temporal::Api::Common::V1::WorkflowExecution.new(
205
+ workflow_execution: Temporalio::Api::Common::V1::WorkflowExecution.new(
200
206
  workflow_id: error.workflow_id || '',
201
207
  run_id: error.run_id || '',
202
208
  ),
203
- workflow_type: Temporal::Api::Common::V1::WorkflowType.new(name: error.workflow_name || ''),
209
+ workflow_type: Temporalio::Api::Common::V1::WorkflowType.new(name: error.workflow_name || ''),
204
210
  initiated_event_id: error.initiated_event_id,
205
211
  started_event_id: error.started_event_id,
206
- retry_state: Temporal::RetryState.to_raw(error.retry_state),
212
+ retry_state: Temporalio::RetryState.to_raw(error.retry_state),
207
213
  ),
208
214
  )
209
215
  end
210
216
 
211
217
  def to_generic_failure(error, _payload_converter)
212
- Temporal::Api::Failure::V1::Failure.new(
213
- application_failure_info: Temporal::Api::Failure::V1::ApplicationFailureInfo.new(
218
+ Temporalio::Api::Failure::V1::Failure.new(
219
+ application_failure_info: Temporalio::Api::Failure::V1::ApplicationFailureInfo.new(
214
220
  type: error.class.name,
215
221
  ),
216
222
  )
217
223
  end
218
224
 
219
225
  def from_application_failure(failure, failure_info, cause, payload_converter)
220
- Temporal::Error::ApplicationError.new(
226
+ Temporalio::Error::ApplicationError.new(
221
227
  failure.message || 'Application error',
222
228
  type: failure_info.type,
223
229
  details: from_payloads(failure_info.details, payload_converter),
@@ -228,9 +234,9 @@ module Temporal
228
234
  end
229
235
 
230
236
  def from_timeout_failure(failure, failure_info, cause, payload_converter)
231
- Temporal::Error::TimeoutError.new(
237
+ Temporalio::Error::TimeoutError.new(
232
238
  failure.message || 'Timeout',
233
- type: Temporal::TimeoutType.from_raw(failure_info.timeout_type),
239
+ type: Temporalio::TimeoutType.from_raw(failure_info.timeout_type),
234
240
  last_heartbeat_details: from_payloads(failure_info.last_heartbeat_details, payload_converter),
235
241
  raw: failure,
236
242
  cause: cause,
@@ -238,7 +244,7 @@ module Temporal
238
244
  end
239
245
 
240
246
  def from_cancelled_failure(failure, failure_info, cause, payload_converter)
241
- Temporal::Error::CancelledError.new(
247
+ Temporalio::Error::CancelledError.new(
242
248
  failure.message || 'Cancelled',
243
249
  details: from_payloads(failure_info.details, payload_converter),
244
250
  raw: failure,
@@ -247,7 +253,7 @@ module Temporal
247
253
  end
248
254
 
249
255
  def from_terminated_failure(failure, _failure_info, cause, _payload_converter)
250
- Temporal::Error::TerminatedError.new(
256
+ Temporalio::Error::TerminatedError.new(
251
257
  failure.message || 'Terminated',
252
258
  raw: failure,
253
259
  cause: cause,
@@ -255,7 +261,7 @@ module Temporal
255
261
  end
256
262
 
257
263
  def from_server_failure(failure, failure_info, cause, _payload_converter)
258
- Temporal::Error::ServerError.new(
264
+ Temporalio::Error::ServerError.new(
259
265
  failure.message || 'Server error',
260
266
  non_retryable: failure_info.non_retryable,
261
267
  raw: failure,
@@ -264,7 +270,7 @@ module Temporal
264
270
  end
265
271
 
266
272
  def from_reset_workflow_failure(failure, failure_info, cause, payload_converter)
267
- Temporal::Error::ResetWorkflowError.new(
273
+ Temporalio::Error::ResetWorkflowError.new(
268
274
  failure.message || 'Reset workflow error',
269
275
  last_heartbeat_details: from_payloads(failure_info.last_heartbeat_details, payload_converter),
270
276
  raw: failure,
@@ -273,21 +279,21 @@ module Temporal
273
279
  end
274
280
 
275
281
  def from_activity_failure(failure, failure_info, cause, _payload_converter)
276
- Temporal::Error::ActivityError.new(
282
+ Temporalio::Error::ActivityError.new(
277
283
  failure.message || 'Activity error',
278
284
  scheduled_event_id: failure_info.scheduled_event_id,
279
285
  started_event_id: failure_info.started_event_id,
280
286
  identity: failure_info.identity,
281
287
  activity_name: failure_info.activity_type&.name,
282
288
  activity_id: failure_info.activity_id,
283
- retry_state: Temporal::RetryState.from_raw(failure_info.retry_state),
289
+ retry_state: Temporalio::RetryState.from_raw(failure_info.retry_state),
284
290
  raw: failure,
285
291
  cause: cause,
286
292
  )
287
293
  end
288
294
 
289
295
  def from_child_workflow_execution_failure(failure, failure_info, cause, _payload_converter)
290
- Temporal::Error::ChildWorkflowError.new(
296
+ Temporalio::Error::ChildWorkflowError.new(
291
297
  failure.message || 'Child workflow error',
292
298
  namespace: failure_info.namespace,
293
299
  workflow_id: failure_info.workflow_execution&.workflow_id,
@@ -295,14 +301,14 @@ module Temporal
295
301
  workflow_name: failure_info.workflow_type&.name,
296
302
  initiated_event_id: failure_info.initiated_event_id,
297
303
  started_event_id: failure_info.started_event_id,
298
- retry_state: Temporal::RetryState.from_raw(failure_info.retry_state),
304
+ retry_state: Temporalio::RetryState.from_raw(failure_info.retry_state),
299
305
  raw: failure,
300
306
  cause: cause,
301
307
  )
302
308
  end
303
309
 
304
310
  def from_generic_failure(failure, cause, _payload_converter)
305
- Temporal::Error::Failure.new(
311
+ Temporalio::Error::Failure.new(
306
312
  failure.message || 'Failure error',
307
313
  raw: failure,
308
314
  cause: cause,
@@ -0,0 +1,7 @@
1
+ require 'temporalio/failure_converter/basic'
2
+
3
+ module Temporalio
4
+ module FailureConverter
5
+ DEFAULT = Temporalio::FailureConverter::Basic.new
6
+ end
7
+ end
@@ -1,5 +1,6 @@
1
- module Temporal
1
+ module Temporalio
2
2
  module Interceptor
3
+ # @api private
3
4
  class Chain
4
5
  def initialize(interceptors = [])
5
6
  @interceptors = interceptors
@@ -1,5 +1,8 @@
1
- module Temporal
1
+ module Temporalio
2
2
  module Interceptor
3
+ # Base class for implementing Client side interceptors.
4
+ #
5
+ # @abstract
3
6
  class Client
4
7
  class StartWorkflowInput < Struct.new(
5
8
  :workflow,
@@ -74,26 +77,44 @@ module Temporal
74
77
  keyword_init: true,
75
78
  ); end
76
79
 
80
+ # Interceptor for {Temporalio::Client#start_workflow}.
81
+ #
82
+ # @param input [StartWorkflowInput]
77
83
  def start_workflow(input)
78
84
  yield(input)
79
85
  end
80
86
 
87
+ # Interceptor for {Temporalio::Client::WorkflowHandle#describe}.
88
+ #
89
+ # @param input [DescribeWorkflowInput]
81
90
  def describe_workflow(input)
82
91
  yield(input)
83
92
  end
84
93
 
94
+ # Interceptor for {Temporalio::Client::WorkflowHandle#query}.
95
+ #
96
+ # @param input [QueryWorkflowInput]
85
97
  def query_workflow(input)
86
98
  yield(input)
87
99
  end
88
100
 
101
+ # Interceptor for {Temporalio::Client::WorkflowHandle#signal}.
102
+ #
103
+ # @param input [SignalWorkflowInput]
89
104
  def signal_workflow(input)
90
105
  yield(input)
91
106
  end
92
107
 
108
+ # Interceptor for {Temporalio::Client::WorkflowHandle#cancel}.
109
+ #
110
+ # @param input [CancelWorkflowInput]
93
111
  def cancel_workflow(input)
94
112
  yield(input)
95
113
  end
96
114
 
115
+ # Interceptor for {Temporalio::Client::WorkflowHandle#terminate}.
116
+ #
117
+ # @param input [TerminateWorkflowInput]
97
118
  def terminate_workflow(input)
98
119
  yield(input)
99
120
  end