restate-sdk 0.7.0 → 0.8.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/Cargo.lock +1 -1
- data/README.md +15 -10
- data/ext/restate_internal/Cargo.toml +1 -1
- data/lib/restate/client.rb +5 -29
- data/lib/restate/config.rb +4 -11
- data/lib/restate/context.rb +13 -128
- data/lib/restate/discovery.rb +6 -15
- data/lib/restate/durable_future.rb +15 -39
- data/lib/restate/endpoint.rb +5 -22
- data/lib/restate/errors.rb +2 -15
- data/lib/restate/handler.rb +21 -21
- data/lib/restate/serde.rb +14 -130
- data/lib/restate/server.rb +10 -26
- data/lib/restate/server_context.rb +50 -248
- data/lib/restate/service.rb +2 -3
- data/lib/restate/service_dsl.rb +8 -8
- data/lib/restate/service_proxy.rb +2 -13
- data/lib/restate/testing.rb +1 -1
- data/lib/restate/version.rb +2 -2
- data/lib/restate/virtual_object.rb +3 -4
- data/lib/restate/vm.rb +9 -74
- data/lib/restate/workflow.rb +3 -4
- data/lib/restate.rb +4 -93
- data/sig/restate.rbs +196 -0
- metadata +3 -18
- data/lib/tapioca/dsl/compilers/restate.rb +0 -115
- data/rbi/restate-sdk.rbi +0 -582
data/rbi/restate-sdk.rbi
DELETED
|
@@ -1,582 +0,0 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
|
|
3
|
-
# RBI shipped with the restate-sdk gem.
|
|
4
|
-
# Tapioca merges this automatically when users run `tapioca gems`.
|
|
5
|
-
|
|
6
|
-
module Restate
|
|
7
|
-
# Create an endpoint, optionally binding services.
|
|
8
|
-
sig do
|
|
9
|
-
params(
|
|
10
|
-
services: T.untyped,
|
|
11
|
-
protocol: T.nilable(String),
|
|
12
|
-
identity_keys: T.nilable(T::Array[String])
|
|
13
|
-
).returns(Restate::Endpoint)
|
|
14
|
-
end
|
|
15
|
-
def self.endpoint(*services, protocol: nil, identity_keys: nil); end
|
|
16
|
-
|
|
17
|
-
# ── Durable execution ──
|
|
18
|
-
|
|
19
|
-
# Execute a durable side effect. Returns a DurableFuture.
|
|
20
|
-
sig do
|
|
21
|
-
params(
|
|
22
|
-
name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
|
|
23
|
-
background: T::Boolean, action: T.proc.returns(T.untyped)
|
|
24
|
-
).returns(DurableFuture)
|
|
25
|
-
end
|
|
26
|
-
def self.run(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
|
|
27
|
-
|
|
28
|
-
# Convenience shortcut for +run(...).await+. Returns the result directly.
|
|
29
|
-
sig do
|
|
30
|
-
params(
|
|
31
|
-
name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
|
|
32
|
-
background: T::Boolean, action: T.proc.returns(T.untyped)
|
|
33
|
-
).returns(T.untyped)
|
|
34
|
-
end
|
|
35
|
-
def self.run_sync(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
|
|
36
|
-
|
|
37
|
-
# Durable timer that survives handler restarts.
|
|
38
|
-
sig { params(seconds: Numeric).returns(DurableFuture) }
|
|
39
|
-
def self.sleep(seconds); end
|
|
40
|
-
|
|
41
|
-
# ── State operations (VirtualObject / Workflow) ──
|
|
42
|
-
|
|
43
|
-
# Durably retrieve a state entry. Returns nil if unset.
|
|
44
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
45
|
-
def self.get(name, serde: Restate::JsonSerde); end
|
|
46
|
-
|
|
47
|
-
# Durably retrieve a state entry, returning a DurableFuture instead of blocking.
|
|
48
|
-
sig { params(name: String, serde: T.untyped).returns(DurableFuture) }
|
|
49
|
-
def self.get_async(name, serde: Restate::JsonSerde); end
|
|
50
|
-
|
|
51
|
-
# Durably set a state entry.
|
|
52
|
-
sig { params(name: String, value: T.untyped, serde: T.untyped).void }
|
|
53
|
-
def self.set(name, value, serde: Restate::JsonSerde); end
|
|
54
|
-
|
|
55
|
-
# Durably remove a single state entry.
|
|
56
|
-
sig { params(name: String).void }
|
|
57
|
-
def self.clear(name); end
|
|
58
|
-
|
|
59
|
-
# Durably remove all state entries.
|
|
60
|
-
sig { void }
|
|
61
|
-
def self.clear_all; end
|
|
62
|
-
|
|
63
|
-
# List all state entry names.
|
|
64
|
-
sig { returns(T.untyped) }
|
|
65
|
-
def self.state_keys; end
|
|
66
|
-
|
|
67
|
-
# List all state entry names, returning a DurableFuture.
|
|
68
|
-
sig { returns(DurableFuture) }
|
|
69
|
-
def self.state_keys_async; end
|
|
70
|
-
|
|
71
|
-
# ── Service communication ──
|
|
72
|
-
|
|
73
|
-
# Durably call a handler on a Restate service.
|
|
74
|
-
sig do
|
|
75
|
-
params(
|
|
76
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
77
|
-
arg: T.untyped, key: T.nilable(String), idempotency_key: T.nilable(String),
|
|
78
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
79
|
-
).returns(DurableCallFuture)
|
|
80
|
-
end
|
|
81
|
-
def self.service_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil,
|
|
82
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
83
|
-
|
|
84
|
-
# Fire-and-forget send to a Restate service handler.
|
|
85
|
-
sig do
|
|
86
|
-
params(
|
|
87
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
88
|
-
arg: T.untyped, key: T.nilable(String), delay: T.nilable(Numeric),
|
|
89
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
90
|
-
input_serde: T.untyped
|
|
91
|
-
).returns(SendHandle)
|
|
92
|
-
end
|
|
93
|
-
def self.service_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil,
|
|
94
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
95
|
-
|
|
96
|
-
# Durably call a handler on a Restate virtual object.
|
|
97
|
-
sig do
|
|
98
|
-
params(
|
|
99
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
100
|
-
key: String, arg: T.untyped, idempotency_key: T.nilable(String),
|
|
101
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
102
|
-
).returns(DurableCallFuture)
|
|
103
|
-
end
|
|
104
|
-
def self.object_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
|
|
105
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
106
|
-
|
|
107
|
-
# Fire-and-forget send to a Restate virtual object handler.
|
|
108
|
-
sig do
|
|
109
|
-
params(
|
|
110
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
111
|
-
key: String, arg: T.untyped, delay: T.nilable(Numeric),
|
|
112
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
113
|
-
input_serde: T.untyped
|
|
114
|
-
).returns(SendHandle)
|
|
115
|
-
end
|
|
116
|
-
def self.object_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
|
|
117
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
118
|
-
|
|
119
|
-
# Durably call a handler on a Restate workflow.
|
|
120
|
-
sig do
|
|
121
|
-
params(
|
|
122
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
123
|
-
key: String, arg: T.untyped, idempotency_key: T.nilable(String),
|
|
124
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
125
|
-
).returns(DurableCallFuture)
|
|
126
|
-
end
|
|
127
|
-
def self.workflow_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
|
|
128
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
129
|
-
|
|
130
|
-
# Fire-and-forget send to a Restate workflow handler.
|
|
131
|
-
sig do
|
|
132
|
-
params(
|
|
133
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
134
|
-
key: String, arg: T.untyped, delay: T.nilable(Numeric),
|
|
135
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
136
|
-
input_serde: T.untyped
|
|
137
|
-
).returns(SendHandle)
|
|
138
|
-
end
|
|
139
|
-
def self.workflow_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
|
|
140
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
141
|
-
|
|
142
|
-
# Durably call a handler using raw bytes (no serialization).
|
|
143
|
-
sig do
|
|
144
|
-
params(
|
|
145
|
-
service: String, handler: String, arg: String,
|
|
146
|
-
key: T.nilable(String), idempotency_key: T.nilable(String),
|
|
147
|
-
headers: T.nilable(T::Hash[String, String])
|
|
148
|
-
).returns(DurableCallFuture)
|
|
149
|
-
end
|
|
150
|
-
def self.generic_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil); end
|
|
151
|
-
|
|
152
|
-
# Fire-and-forget send using raw bytes (no serialization).
|
|
153
|
-
sig do
|
|
154
|
-
params(
|
|
155
|
-
service: String, handler: String, arg: String,
|
|
156
|
-
key: T.nilable(String), delay: T.nilable(Numeric),
|
|
157
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String])
|
|
158
|
-
).returns(SendHandle)
|
|
159
|
-
end
|
|
160
|
-
def self.generic_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil, headers: nil); end
|
|
161
|
-
|
|
162
|
-
# ── Awakeables ──
|
|
163
|
-
|
|
164
|
-
# Create an awakeable for external callbacks. Returns [awakeable_id, DurableFuture].
|
|
165
|
-
sig { params(serde: T.untyped).returns([String, DurableFuture]) }
|
|
166
|
-
def self.awakeable(serde: Restate::JsonSerde); end
|
|
167
|
-
|
|
168
|
-
# Resolve an awakeable with a success value.
|
|
169
|
-
sig { params(awakeable_id: String, payload: T.untyped, serde: T.untyped).void }
|
|
170
|
-
def self.resolve_awakeable(awakeable_id, payload, serde: Restate::JsonSerde); end
|
|
171
|
-
|
|
172
|
-
# Reject an awakeable with a terminal failure.
|
|
173
|
-
sig { params(awakeable_id: String, message: String, code: Integer).void }
|
|
174
|
-
def self.reject_awakeable(awakeable_id, message, code: 500); end
|
|
175
|
-
|
|
176
|
-
# ── Promises (Workflow only) ──
|
|
177
|
-
|
|
178
|
-
# Get a durable promise value, blocking until resolved.
|
|
179
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
180
|
-
def self.promise(name, serde: Restate::JsonSerde); end
|
|
181
|
-
|
|
182
|
-
# Peek at a durable promise without blocking. Returns nil if not yet resolved.
|
|
183
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
184
|
-
def self.peek_promise(name, serde: Restate::JsonSerde); end
|
|
185
|
-
|
|
186
|
-
# Resolve a durable promise with a value.
|
|
187
|
-
sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
|
|
188
|
-
def self.resolve_promise(name, payload, serde: Restate::JsonSerde); end
|
|
189
|
-
|
|
190
|
-
# Reject a durable promise with a terminal failure.
|
|
191
|
-
sig { params(name: String, message: String, code: Integer).void }
|
|
192
|
-
def self.reject_promise(name, message, code: 500); end
|
|
193
|
-
|
|
194
|
-
# ── Futures ──
|
|
195
|
-
|
|
196
|
-
# Wait until any of the given futures completes. Returns [completed, remaining].
|
|
197
|
-
sig { params(futures: DurableFuture).returns([T::Array[DurableFuture], T::Array[DurableFuture]]) }
|
|
198
|
-
def self.wait_any(*futures); end
|
|
199
|
-
|
|
200
|
-
# ── Request metadata ──
|
|
201
|
-
|
|
202
|
-
# Returns metadata about the current invocation (id, headers, raw body).
|
|
203
|
-
sig { returns(T.untyped) }
|
|
204
|
-
def self.request; end
|
|
205
|
-
|
|
206
|
-
# Returns the key for this virtual object or workflow invocation.
|
|
207
|
-
sig { returns(String) }
|
|
208
|
-
def self.key; end
|
|
209
|
-
|
|
210
|
-
# ── Invocation control ──
|
|
211
|
-
|
|
212
|
-
# Request cancellation of another invocation.
|
|
213
|
-
sig { params(invocation_id: String).void }
|
|
214
|
-
def self.cancel_invocation(invocation_id); end
|
|
215
|
-
|
|
216
|
-
class TerminalError < StandardError
|
|
217
|
-
sig { returns(Integer) }
|
|
218
|
-
def status_code; end
|
|
219
|
-
|
|
220
|
-
sig { params(message: String, status_code: Integer).void }
|
|
221
|
-
def initialize(message = '', status_code: 500); end
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
class AttemptFinishedEvent
|
|
225
|
-
sig { returns(T::Boolean) }
|
|
226
|
-
def set?; end
|
|
227
|
-
|
|
228
|
-
sig { void }
|
|
229
|
-
def wait; end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
Request = T.type_alias { T.untyped }
|
|
233
|
-
|
|
234
|
-
class RunRetryPolicy < T::Struct
|
|
235
|
-
const :initial_interval, T.nilable(Integer)
|
|
236
|
-
const :max_attempts, T.nilable(Integer)
|
|
237
|
-
const :max_duration, T.nilable(Integer)
|
|
238
|
-
const :max_interval, T.nilable(Integer)
|
|
239
|
-
const :interval_factor, T.nilable(Float)
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
class DurableFuture
|
|
243
|
-
sig { returns(T.untyped) }
|
|
244
|
-
def await; end
|
|
245
|
-
|
|
246
|
-
sig { returns(T::Boolean) }
|
|
247
|
-
def completed?; end
|
|
248
|
-
|
|
249
|
-
sig { returns(Integer) }
|
|
250
|
-
def handle; end
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
class DurableCallFuture < DurableFuture
|
|
254
|
-
sig { returns(String) }
|
|
255
|
-
def invocation_id; end
|
|
256
|
-
|
|
257
|
-
sig { void }
|
|
258
|
-
def cancel; end
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
class SendHandle
|
|
262
|
-
sig { returns(String) }
|
|
263
|
-
def invocation_id; end
|
|
264
|
-
|
|
265
|
-
sig { void }
|
|
266
|
-
def cancel; end
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# Base context interface for all Restate handlers.
|
|
270
|
-
module Context
|
|
271
|
-
sig do
|
|
272
|
-
params(
|
|
273
|
-
name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
|
|
274
|
-
background: T::Boolean, action: T.proc.returns(T.untyped)
|
|
275
|
-
).returns(DurableFuture)
|
|
276
|
-
end
|
|
277
|
-
def run(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
|
|
278
|
-
|
|
279
|
-
sig do
|
|
280
|
-
params(
|
|
281
|
-
name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
|
|
282
|
-
background: T::Boolean, action: T.proc.returns(T.untyped)
|
|
283
|
-
).returns(T.untyped)
|
|
284
|
-
end
|
|
285
|
-
def run_sync(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
|
|
286
|
-
|
|
287
|
-
sig { params(seconds: Numeric).returns(DurableFuture) }
|
|
288
|
-
def sleep(seconds); end
|
|
289
|
-
|
|
290
|
-
sig do
|
|
291
|
-
params(
|
|
292
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
293
|
-
arg: T.untyped, key: T.nilable(String), idempotency_key: T.nilable(String),
|
|
294
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
295
|
-
).returns(DurableCallFuture)
|
|
296
|
-
end
|
|
297
|
-
def service_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil,
|
|
298
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
299
|
-
|
|
300
|
-
sig do
|
|
301
|
-
params(
|
|
302
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
303
|
-
arg: T.untyped, key: T.nilable(String), delay: T.nilable(Numeric),
|
|
304
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
305
|
-
input_serde: T.untyped
|
|
306
|
-
).returns(SendHandle)
|
|
307
|
-
end
|
|
308
|
-
def service_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil,
|
|
309
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
310
|
-
|
|
311
|
-
sig do
|
|
312
|
-
params(
|
|
313
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
314
|
-
key: String, arg: T.untyped, idempotency_key: T.nilable(String),
|
|
315
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
316
|
-
).returns(DurableCallFuture)
|
|
317
|
-
end
|
|
318
|
-
def object_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
|
|
319
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
320
|
-
|
|
321
|
-
sig do
|
|
322
|
-
params(
|
|
323
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
324
|
-
key: String, arg: T.untyped, delay: T.nilable(Numeric),
|
|
325
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
326
|
-
input_serde: T.untyped
|
|
327
|
-
).returns(SendHandle)
|
|
328
|
-
end
|
|
329
|
-
def object_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
|
|
330
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
331
|
-
|
|
332
|
-
sig do
|
|
333
|
-
params(
|
|
334
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
335
|
-
key: String, arg: T.untyped, idempotency_key: T.nilable(String),
|
|
336
|
-
headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
|
|
337
|
-
).returns(DurableCallFuture)
|
|
338
|
-
end
|
|
339
|
-
def workflow_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
|
|
340
|
-
input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
|
|
341
|
-
|
|
342
|
-
sig do
|
|
343
|
-
params(
|
|
344
|
-
service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
|
|
345
|
-
key: String, arg: T.untyped, delay: T.nilable(Numeric),
|
|
346
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
|
|
347
|
-
input_serde: T.untyped
|
|
348
|
-
).returns(SendHandle)
|
|
349
|
-
end
|
|
350
|
-
def workflow_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
|
|
351
|
-
headers: nil, input_serde: T.unsafe(nil)); end
|
|
352
|
-
|
|
353
|
-
sig do
|
|
354
|
-
params(
|
|
355
|
-
service: String, handler: String, arg: String,
|
|
356
|
-
key: T.nilable(String), idempotency_key: T.nilable(String),
|
|
357
|
-
headers: T.nilable(T::Hash[String, String])
|
|
358
|
-
).returns(DurableCallFuture)
|
|
359
|
-
end
|
|
360
|
-
def generic_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil); end
|
|
361
|
-
|
|
362
|
-
sig do
|
|
363
|
-
params(
|
|
364
|
-
service: String, handler: String, arg: String,
|
|
365
|
-
key: T.nilable(String), delay: T.nilable(Numeric),
|
|
366
|
-
idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String])
|
|
367
|
-
).returns(SendHandle)
|
|
368
|
-
end
|
|
369
|
-
def generic_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil, headers: nil); end
|
|
370
|
-
|
|
371
|
-
sig { params(serde: T.untyped).returns([String, DurableFuture]) }
|
|
372
|
-
def awakeable(serde: Restate::JsonSerde); end
|
|
373
|
-
|
|
374
|
-
sig { params(awakeable_id: String, payload: T.untyped, serde: T.untyped).void }
|
|
375
|
-
def resolve_awakeable(awakeable_id, payload, serde: Restate::JsonSerde); end
|
|
376
|
-
|
|
377
|
-
sig { params(awakeable_id: String, message: String, code: Integer).void }
|
|
378
|
-
def reject_awakeable(awakeable_id, message, code: 500); end
|
|
379
|
-
|
|
380
|
-
sig { params(invocation_id: String).void }
|
|
381
|
-
def cancel_invocation(invocation_id); end
|
|
382
|
-
|
|
383
|
-
sig { params(futures: DurableFuture).returns([T::Array[DurableFuture], T::Array[DurableFuture]]) }
|
|
384
|
-
def wait_any(*futures); end
|
|
385
|
-
|
|
386
|
-
sig { returns(T.untyped) }
|
|
387
|
-
def request; end
|
|
388
|
-
|
|
389
|
-
sig { returns(String) }
|
|
390
|
-
def key; end
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
# VirtualObject shared handler context (read-only state).
|
|
394
|
-
module ObjectSharedContext
|
|
395
|
-
include Context
|
|
396
|
-
|
|
397
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
398
|
-
def get(name, serde: Restate::JsonSerde); end
|
|
399
|
-
|
|
400
|
-
sig { params(name: String, serde: T.untyped).returns(DurableFuture) }
|
|
401
|
-
def get_async(name, serde: Restate::JsonSerde); end
|
|
402
|
-
|
|
403
|
-
sig { returns(T.untyped) }
|
|
404
|
-
def state_keys; end
|
|
405
|
-
|
|
406
|
-
sig { returns(DurableFuture) }
|
|
407
|
-
def state_keys_async; end
|
|
408
|
-
end
|
|
409
|
-
|
|
410
|
-
# VirtualObject exclusive handler context (full state access).
|
|
411
|
-
module ObjectContext
|
|
412
|
-
include ObjectSharedContext
|
|
413
|
-
|
|
414
|
-
sig { params(name: String, value: T.untyped, serde: T.untyped).void }
|
|
415
|
-
def set(name, value, serde: Restate::JsonSerde); end
|
|
416
|
-
|
|
417
|
-
sig { params(name: String).void }
|
|
418
|
-
def clear(name); end
|
|
419
|
-
|
|
420
|
-
sig { void }
|
|
421
|
-
def clear_all; end
|
|
422
|
-
end
|
|
423
|
-
|
|
424
|
-
# Workflow shared handler context (read-only state + promises).
|
|
425
|
-
module WorkflowSharedContext
|
|
426
|
-
include ObjectSharedContext
|
|
427
|
-
|
|
428
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
429
|
-
def promise(name, serde: Restate::JsonSerde); end
|
|
430
|
-
|
|
431
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
432
|
-
def peek_promise(name, serde: Restate::JsonSerde); end
|
|
433
|
-
|
|
434
|
-
sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
|
|
435
|
-
def resolve_promise(name, payload, serde: Restate::JsonSerde); end
|
|
436
|
-
|
|
437
|
-
sig { params(name: String, message: String, code: Integer).void }
|
|
438
|
-
def reject_promise(name, message, code: 500); end
|
|
439
|
-
end
|
|
440
|
-
|
|
441
|
-
# Workflow main handler context (full state + promises).
|
|
442
|
-
module WorkflowContext
|
|
443
|
-
include ObjectContext
|
|
444
|
-
|
|
445
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
446
|
-
def promise(name, serde: Restate::JsonSerde); end
|
|
447
|
-
|
|
448
|
-
sig { params(name: String, serde: T.untyped).returns(T.untyped) }
|
|
449
|
-
def peek_promise(name, serde: Restate::JsonSerde); end
|
|
450
|
-
|
|
451
|
-
sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
|
|
452
|
-
def resolve_promise(name, payload, serde: Restate::JsonSerde); end
|
|
453
|
-
|
|
454
|
-
sig { params(name: String, message: String, code: Integer).void }
|
|
455
|
-
def reject_promise(name, message, code: 500); end
|
|
456
|
-
end
|
|
457
|
-
|
|
458
|
-
# Stateless service base class.
|
|
459
|
-
class Service
|
|
460
|
-
sig { returns(ServiceCallProxy) }
|
|
461
|
-
def self.call; end
|
|
462
|
-
|
|
463
|
-
sig { params(delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
|
|
464
|
-
def self.send!(delay: nil); end
|
|
465
|
-
end
|
|
466
|
-
|
|
467
|
-
# Keyed virtual object base class.
|
|
468
|
-
class VirtualObject
|
|
469
|
-
sig { params(key: String).returns(ServiceCallProxy) }
|
|
470
|
-
def self.call(key); end
|
|
471
|
-
|
|
472
|
-
sig { params(key: String, delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
|
|
473
|
-
def self.send!(key, delay: nil); end
|
|
474
|
-
|
|
475
|
-
sig { params(name: Symbol, default: T.untyped, serde: T.untyped).void }
|
|
476
|
-
def self.state(name, default: nil, serde: nil); end
|
|
477
|
-
end
|
|
478
|
-
|
|
479
|
-
# Durable workflow base class.
|
|
480
|
-
class Workflow
|
|
481
|
-
sig { params(key: String).returns(ServiceCallProxy) }
|
|
482
|
-
def self.call(key); end
|
|
483
|
-
|
|
484
|
-
sig { params(key: String, delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
|
|
485
|
-
def self.send!(key, delay: nil); end
|
|
486
|
-
|
|
487
|
-
sig { params(name: Symbol, default: T.untyped, serde: T.untyped).void }
|
|
488
|
-
def self.state(name, default: nil, serde: nil); end
|
|
489
|
-
end
|
|
490
|
-
|
|
491
|
-
# Proxy for fluent durable calls.
|
|
492
|
-
class ServiceCallProxy; end
|
|
493
|
-
|
|
494
|
-
# Proxy for fluent fire-and-forget sends.
|
|
495
|
-
class ServiceSendProxy; end
|
|
496
|
-
|
|
497
|
-
# Global SDK configuration.
|
|
498
|
-
class Config
|
|
499
|
-
sig { returns(String) }
|
|
500
|
-
attr_accessor :ingress_url
|
|
501
|
-
|
|
502
|
-
sig { returns(String) }
|
|
503
|
-
attr_accessor :admin_url
|
|
504
|
-
|
|
505
|
-
sig { returns(T::Hash[String, String]) }
|
|
506
|
-
attr_accessor :ingress_headers
|
|
507
|
-
|
|
508
|
-
sig { returns(T::Hash[String, String]) }
|
|
509
|
-
attr_accessor :admin_headers
|
|
510
|
-
end
|
|
511
|
-
|
|
512
|
-
# Configure the SDK globally.
|
|
513
|
-
sig { params(block: T.proc.params(arg0: Config).void).void }
|
|
514
|
-
def self.configure(&block); end
|
|
515
|
-
|
|
516
|
-
# Returns the global configuration.
|
|
517
|
-
sig { returns(Config) }
|
|
518
|
-
def self.config; end
|
|
519
|
-
|
|
520
|
-
# Returns a pre-configured Client using the global config.
|
|
521
|
-
sig { returns(Client) }
|
|
522
|
-
def self.client; end
|
|
523
|
-
|
|
524
|
-
# HTTP client for invoking Restate services and managing the runtime.
|
|
525
|
-
class Client
|
|
526
|
-
sig do
|
|
527
|
-
params(ingress_url: String, admin_url: String,
|
|
528
|
-
ingress_headers: T::Hash[String, String],
|
|
529
|
-
admin_headers: T::Hash[String, String]).void
|
|
530
|
-
end
|
|
531
|
-
def initialize(ingress_url: 'http://localhost:8080', admin_url: 'http://localhost:9070',
|
|
532
|
-
ingress_headers: {}, admin_headers: {}); end
|
|
533
|
-
|
|
534
|
-
sig { params(service: T.any(String, T::Class[T.anything])).returns(ClientServiceProxy) }
|
|
535
|
-
def service(service); end
|
|
536
|
-
|
|
537
|
-
sig { params(service: T.any(String, T::Class[T.anything]), key: String).returns(ClientServiceProxy) }
|
|
538
|
-
def object(service, key); end
|
|
539
|
-
|
|
540
|
-
sig { params(service: T.any(String, T::Class[T.anything]), key: String).returns(ClientServiceProxy) }
|
|
541
|
-
def workflow(service, key); end
|
|
542
|
-
|
|
543
|
-
sig { params(awakeable_id: String, payload: T.untyped).void }
|
|
544
|
-
def resolve_awakeable(awakeable_id, payload); end
|
|
545
|
-
|
|
546
|
-
sig { params(awakeable_id: String, message: String, code: Integer).void }
|
|
547
|
-
def reject_awakeable(awakeable_id, message, code: 500); end
|
|
548
|
-
|
|
549
|
-
sig { params(invocation_id: String).void }
|
|
550
|
-
def cancel_invocation(invocation_id); end
|
|
551
|
-
|
|
552
|
-
sig { params(invocation_id: String).void }
|
|
553
|
-
def kill_invocation(invocation_id); end
|
|
554
|
-
|
|
555
|
-
end
|
|
556
|
-
|
|
557
|
-
# Proxy for HTTP client calls.
|
|
558
|
-
class ClientServiceProxy; end
|
|
559
|
-
|
|
560
|
-
class Endpoint
|
|
561
|
-
sig { params(services: T.untyped).void }
|
|
562
|
-
def bind(*services); end
|
|
563
|
-
|
|
564
|
-
sig { void }
|
|
565
|
-
def streaming_protocol; end
|
|
566
|
-
|
|
567
|
-
sig { void }
|
|
568
|
-
def request_response_protocol; end
|
|
569
|
-
|
|
570
|
-
sig { params(key: String).void }
|
|
571
|
-
def identity_key(key); end
|
|
572
|
-
|
|
573
|
-
sig { params(klass: T.untyped, args: T.untyped, kwargs: T.untyped).returns(T.self_type) }
|
|
574
|
-
def use(klass, *args, **kwargs); end
|
|
575
|
-
|
|
576
|
-
sig { returns(T.untyped) }
|
|
577
|
-
def app; end
|
|
578
|
-
end
|
|
579
|
-
|
|
580
|
-
module JsonSerde; end
|
|
581
|
-
module BytesSerde; end
|
|
582
|
-
end
|