Module: Julewire::Ractor::Bridge
- Defined in:
- lib/julewire/ractor/bridge.rb,
lib/julewire/ractor/bridge/stats.rb,
lib/julewire/ractor/bridge/bridge_thread.rb,
lib/julewire/ractor/bridge/runtime_validation.rb
Overview
Experimental bridge that forwards ractor records back to a parent runtime.
Defined Under Namespace
Modules: BridgeThread, RuntimeValidation, Stats
Class Method Summary
collapse
Class Method Details
.after_fork! ⇒ Object
49
|
# File 'lib/julewire/ractor/bridge.rb', line 49
def after_fork! = Stats.after_fork!
|
.enabled? ⇒ Boolean
18
|
# File 'lib/julewire/ractor/bridge.rb', line 18
def enabled? = ENABLED.get
|
.health ⇒ Object
42
|
# File 'lib/julewire/ractor/bridge.rb', line 42
def health = Stats.health
|
.opt_in! ⇒ Object
14
15
16
|
# File 'lib/julewire/ractor/bridge.rb', line 14
def opt_in!
ENABLED.set(true)
end
|
.reset! ⇒ Object
44
45
46
47
|
# File 'lib/julewire/ractor/bridge.rb', line 44
def reset!
ENABLED.set(false)
Stats.reset!
end
|
.spawn(args:, name:, runtime:) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/julewire/ractor/bridge.rb', line 20
def spawn(args:, name:, runtime:, &)
unless enabled?
raise Core::Error, "Julewire.ractor is experimental; call Julewire.enable_experimental_ractor! first"
end
RuntimeValidation.validate!(runtime)
envelope = Core::Propagation.capture
body = ::Ractor.shareable_proc(&)
port = ::Ractor::Port.new
ractor = spawn_ractor(
args: args,
name: name,
port: port,
envelope: envelope,
body: body,
emit_non_standard_exception_summaries: runtime.config.emit_non_standard_exception_summaries
)
start_bridge(port: port, runtime: runtime, ractor: ractor)
ractor
end
|