Class: Julewire::Ractor::RemoteRuntime
- Inherits:
-
Object
- Object
- Julewire::Ractor::RemoteRuntime
- Defined in:
- lib/julewire/ractor/remote_runtime.rb
Constant Summary collapse
- DEFAULT_REQUEST_TIMEOUT =
1- REQUEST_TIMEOUT =
::Ractor.make_shareable(Object.new)
Instance Method Summary collapse
- #after_fork! ⇒ Object
- #attributes ⇒ Object
- #carry ⇒ Object
- #child_stats ⇒ Object
- #close ⇒ Object
- #config ⇒ Object
- #configure ⇒ Object
- #context ⇒ Object
- #current_execution ⇒ Object
- #current_execution? ⇒ Boolean
- #emit(record = Core::UNSET, **fields) ⇒ Object
- #emit_summary_record(scope) ⇒ Object
- #emit_without_level(record = Core::UNSET, **fields) ⇒ Object
- #flush(timeout: Core::UNSET) ⇒ Object
- #health ⇒ Object
-
#initialize(port:, emit_non_standard_exception_summaries: false) ⇒ RemoteRuntime
constructor
A new instance of RemoteRuntime.
- #labels ⇒ Object
- #reset! ⇒ Object
- #reset_child_stats! ⇒ Object
- #start_execution ⇒ Object
- #summary ⇒ Object
- #with_execution ⇒ Object
Constructor Details
#initialize(port:, emit_non_standard_exception_summaries: false) ⇒ RemoteRuntime
Returns a new instance of RemoteRuntime.
9 10 11 12 13 14 15 16 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 9 def initialize(port:, emit_non_standard_exception_summaries: false) @port = port @child_stats = ChildStats.new @emit_non_standard_exception_summaries = emit_non_standard_exception_summaries @request_mutex = Mutex.new @timeout_scheduler = ReplyTimeoutScheduler.new(timeout_value: REQUEST_TIMEOUT) @execution_boundary = build_execution_boundary end |
Instance Method Details
#after_fork! ⇒ Object
64 65 66 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 64 def after_fork!(**) raise Core::Error, "Julewire.after_fork! is not available inside Julewire.ractor" end |
#attributes ⇒ Object
24 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 24 def attributes = Core::ContextStore.current.attributes_proxy |
#carry ⇒ Object
26 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 26 def carry = Core::ContextStore.current.carry_proxy |
#child_stats ⇒ Object
38 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 38 def child_stats = @child_stats.to_h |
#close ⇒ Object
72 73 74 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 72 def close(**) raise Core::Error, "Julewire.close is not available inside Julewire.ractor; use Julewire.flush instead" end |
#config ⇒ Object
18 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 18 def config = raise Core::Error, "Julewire.config is not available inside Julewire.ractor" |
#configure ⇒ Object
20 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 20 def configure = raise Core::Error, "Julewire.configure is not available inside Julewire.ractor" |
#context ⇒ Object
22 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 22 def context = Core::ContextStore.current.context_proxy |
#current_execution ⇒ Object
30 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 30 def current_execution = current_scope && Core::Execution::View.new(current_scope) |
#current_execution? ⇒ Boolean
32 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 32 def current_execution? = !!current_scope |
#emit(record = Core::UNSET, **fields) ⇒ Object
42 43 44 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 42 def emit(record = Core::UNSET, **fields, &) remote_emit(:emit, record, fields, &) end |
#emit_summary_record(scope) ⇒ Object
84 85 86 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 84 def emit_summary_record(scope) notify(:emit_record, payload: Core::Serialization::Serializer.call(summary_record_input(scope))) end |
#emit_without_level(record = Core::UNSET, **fields) ⇒ Object
46 47 48 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 46 def emit_without_level(record = Core::UNSET, **fields, &) remote_emit(:emit_without_level, record, fields, &) end |
#flush(timeout: Core::UNSET) ⇒ Object
58 59 60 61 62 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 58 def flush(timeout: Core::UNSET) timeout = effective_timeout(timeout) Core::Validation.validate_timeout!(timeout, name: :timeout) request(:flush, timeout: timeout) end |
#health ⇒ Object
68 69 70 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 68 def health raise Core::Error, "Julewire.health is not available inside Julewire.ractor" end |
#labels ⇒ Object
76 77 78 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 76 def labels raise Core::Error, "Julewire.labels is not available inside Julewire.ractor" end |
#reset! ⇒ Object
80 81 82 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 80 def reset! Core::ContextStore.reset_current! end |
#reset_child_stats! ⇒ Object
40 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 40 def reset_child_stats! = @child_stats.reset! |
#start_execution ⇒ Object
36 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 36 def start_execution(...) = @execution_boundary.start_execution(...) |
#summary ⇒ Object
28 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 28 def summary = Core::ContextStore.current.summary_proxy |
#with_execution ⇒ Object
34 |
# File 'lib/julewire/ractor/remote_runtime.rb', line 34 def with_execution(...) = @execution_boundary.with_execution(...) |