Class: Julewire::Ractor::RemoteRuntime

Inherits:
Object
  • Object
show all
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

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

Raises:

  • (Core::Error)


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

#attributesObject



24
# File 'lib/julewire/ractor/remote_runtime.rb', line 24

def attributes = Core::ContextStore.current.attributes_proxy

#carryObject



26
# File 'lib/julewire/ractor/remote_runtime.rb', line 26

def carry = Core::ContextStore.current.carry_proxy

#child_statsObject



38
# File 'lib/julewire/ractor/remote_runtime.rb', line 38

def child_stats = @child_stats.to_h

#closeObject

Raises:

  • (Core::Error)


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

#configObject

Raises:

  • (Core::Error)


18
# File 'lib/julewire/ractor/remote_runtime.rb', line 18

def config = raise Core::Error, "Julewire.config is not available inside Julewire.ractor"

#configureObject

Raises:

  • (Core::Error)


20
# File 'lib/julewire/ractor/remote_runtime.rb', line 20

def configure = raise Core::Error, "Julewire.configure is not available inside Julewire.ractor"

#contextObject



22
# File 'lib/julewire/ractor/remote_runtime.rb', line 22

def context = Core::ContextStore.current.context_proxy

#current_executionObject



30
# File 'lib/julewire/ractor/remote_runtime.rb', line 30

def current_execution = current_scope && Core::Execution::View.new(current_scope)

#current_execution?Boolean

Returns:

  • (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

#healthObject

Raises:

  • (Core::Error)


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

#labelsObject

Raises:

  • (Core::Error)


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_executionObject



36
# File 'lib/julewire/ractor/remote_runtime.rb', line 36

def start_execution(...) = @execution_boundary.start_execution(...)

#summaryObject



28
# File 'lib/julewire/ractor/remote_runtime.rb', line 28

def summary = Core::ContextStore.current.summary_proxy

#with_executionObject



34
# File 'lib/julewire/ractor/remote_runtime.rb', line 34

def with_execution(...) = @execution_boundary.with_execution(...)