Class: Restate::VirtualObject
- Inherits:
-
Object
- Object
- Restate::VirtualObject
- Extended by:
- ServiceDSL
- Defined in:
- lib/restate/virtual_object.rb
Overview
A keyed virtual object with durable state.
Class Method Summary collapse
- ._service_kind ⇒ Object
-
.call(key) ⇒ ServiceCallProxy
Returns a call proxy for fluent durable calls to this virtual object.
-
.handler(method_name = nil, kind: :exclusive, **opts) ⇒ Symbol
Register an exclusive handler.
-
.send!(key, delay: nil) ⇒ ServiceSendProxy
Returns a send proxy for fluent fire-and-forget sends to this virtual object.
-
.shared(method_name, **opts) ⇒ Symbol
Register a shared (concurrent-access) handler.
Methods included from ServiceDSL
abort_timeout, description, enable_lazy_state, handlers, idempotency_retention, inactivity_timeout, ingress_private, inherited, invocation_retry_policy, journal_retention, lazy_state?, metadata, service_name, service_tag, state, svc_abort_timeout, svc_idempotency_retention, svc_inactivity_timeout, svc_ingress_private, svc_invocation_retry_policy, svc_journal_retention
Class Method Details
._service_kind ⇒ Object
75 76 77 |
# File 'lib/restate/virtual_object.rb', line 75 def self._service_kind 'object' end |
.call(key) ⇒ ServiceCallProxy
Returns a call proxy for fluent durable calls to this virtual object.
58 59 60 |
# File 'lib/restate/virtual_object.rb', line 58 def self.call(key) ServiceCallProxy.new(self, key: key, call_method: :object_call) end |
.handler(method_name = nil, kind: :exclusive, **opts) ⇒ Symbol
Register an exclusive handler. Use as: handler def my_method(ctx, arg)
28 29 30 31 32 33 34 35 36 |
# File 'lib/restate/virtual_object.rb', line 28 def self.handler(method_name = nil, kind: :exclusive, **opts) if method_name.is_a?(String) raise ArgumentError, "handler expects a Symbol (use `handler def #{method_name}(...)` or `handler :#{method_name}`)" end return method_name unless method_name.is_a?(Symbol) _register_handler(method_name, kind: kind.to_s, **opts) end |
.send!(key, delay: nil) ⇒ ServiceSendProxy
Returns a send proxy for fluent fire-and-forget sends to this virtual object.
71 72 73 |
# File 'lib/restate/virtual_object.rb', line 71 def self.send!(key, delay: nil) ServiceSendProxy.new(self, key: key, send_method: :object_send, delay: delay) end |
.shared(method_name, **opts) ⇒ Symbol
Register a shared (concurrent-access) handler.
42 43 44 45 46 47 48 49 |
# File 'lib/restate/virtual_object.rb', line 42 def self.shared(method_name, **opts) if method_name.is_a?(String) raise ArgumentError, "handler expects a Symbol (use `shared def #{method_name}(...)` or `shared :#{method_name}`)" end _register_handler(method_name, kind: 'shared', **opts) end |