Module: Julewire::Core::Propagation::Carrier
- Defined in:
- lib/julewire/core/propagation/carrier.rb
Defined Under Namespace
Classes: Extracted, ExtractionError
Constant Summary
collapse
- DEFAULT_KEY =
"julewire"
- DEFAULT_MAX_BYTES =
65_536
Class Method Summary
collapse
-
.encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) ⇒ Object
-
.extract_envelope(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
-
.extract_result(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
-
.inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) ⇒ Object
-
.restore(carrier, key: DEFAULT_KEY, link_executions: false, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
-
.serialized_envelope(envelope) ⇒ Object
Class Method Details
.encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/julewire/core/propagation/carrier.rb', line 41
def encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil)
Validation.validate_byte_limit!(max_bytes, name: :max_bytes)
encoded = JSON.generate(serialized_envelope(envelope))
return if max_bytes && encoded.bytesize > max_bytes
encoded
end
|
60
61
62
|
# File 'lib/julewire/core/propagation/carrier.rb', line 60
def (carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES)
(carrier, key: key, max_bytes: max_bytes).envelope
end
|
.inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) ⇒ Object
50
51
52
53
54
55
56
57
58
|
# File 'lib/julewire/core/propagation/carrier.rb', line 50
def inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil)
validate_carrier!(carrier)
encoded = encode(envelope: envelope, max_bytes: max_bytes)
clear_carrier_key!(carrier, key)
return unless encoded
carrier[key.to_s] = encoded
carrier
end
|
.restore(carrier, key: DEFAULT_KEY, link_executions: false, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
71
72
73
74
|
# File 'lib/julewire/core/propagation/carrier.rb', line 71
def restore(carrier, key: DEFAULT_KEY, link_executions: false, max_bytes: DEFAULT_MAX_BYTES, &)
envelope = (carrier, key: key, max_bytes: max_bytes).envelope
Propagation.restore(envelope, link_executions: link_executions, owned: true, &)
end
|
.serialized_envelope(envelope) ⇒ Object