Module: Julewire::Ractor::RemotePayload

Defined in:
lib/julewire/ractor/remote_payload.rb

Class Method Summary collapse

Class Method Details

.extract(payload) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/julewire/ractor/remote_payload.rb', line 10

def extract(payload)
  {
    input: input_value(payload),
    context: hash_value(payload, :context),
    neutral: hash_value(payload, :neutral),
    attributes: hash_value(payload, :attributes),
    carry: hash_value(payload, :carry),
    scope: scope_snapshot(hash_value(payload, :scope))
  }
end

.hash_value(hash, key) ⇒ Object



39
40
41
42
# File 'lib/julewire/ractor/remote_payload.rb', line 39

def hash_value(hash, key)
  value = Core::Integration::Values::Read.hash_value(hash, key)
  value.is_a?(Hash) ? Core::Fields::FieldSet.deep_symbolize_owned_keys(value) : {}
end

.input_value(payload) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/julewire/ractor/remote_payload.rb', line 21

def input_value(payload)
  value = Core::Integration::Values::Read.hash_value(payload, :input, default: MISSING)
  return {} if value.equal?(MISSING)
  return Core::Fields::FieldSet.deep_symbolize_owned_keys(value) if value.is_a?(Hash)

  value
end

.scope_snapshot(scope_payload) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/julewire/ractor/remote_payload.rb', line 29

def scope_snapshot(scope_payload)
  Core::Execution::ScopeSnapshot.new(
    execution: hash_value(scope_payload, :execution),
    neutral: hash_value(scope_payload, :neutral),
    attributes: hash_value(scope_payload, :attributes),
    carry: hash_value(scope_payload, :carry),
    labels: hash_value(scope_payload, :labels)
  )
end