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



36
37
38
39
# File 'lib/julewire/ractor/remote_payload.rb', line 36

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

.input_value(payload) ⇒ Object



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

def input_value(payload)
  value = Core::Integration::Values::Read.hash_value(payload, :input, default: MISSING)
  value.equal?(MISSING) ? {} : value
end

.scope_snapshot(scope_payload) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/julewire/ractor/remote_payload.rb', line 26

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