Module: Julewire::Core::Propagation::Carrier
- Defined in:
- lib/julewire/core/propagation/carrier.rb
Defined Under Namespace
Classes: 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(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
40 41 42 43 44 45 46 47 |
# File 'lib/julewire/core/propagation/carrier.rb', line 40 def encode(envelope: DEFAULT_ENVELOPE, max_bytes: nil) Validation.validate_byte_limit!(max_bytes, name: :max_bytes) encoded = JSON.generate(serialized_envelope(envelope), allow_nan: false) return if max_bytes && encoded.bytesize > max_bytes encoded end |
.extract(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
59 60 61 |
# File 'lib/julewire/core/propagation/carrier.rb', line 59 def extract(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) extract_result(carrier, key: key, max_bytes: max_bytes).envelope end |
.extract_result(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
64 65 66 67 68 |
# File 'lib/julewire/core/propagation/carrier.rb', line 64 def extract_result(carrier, key: DEFAULT_KEY, max_bytes: DEFAULT_MAX_BYTES) Validation.validate_byte_limit!(max_bytes, name: :max_bytes) extract_payload(carrier, key: key, max_bytes: max_bytes) end |
.inject(carrier = {}, envelope: DEFAULT_ENVELOPE, key: DEFAULT_KEY, max_bytes: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/julewire/core/propagation/carrier.rb', line 49 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) unless encoded return unless encoded carrier[key.to_s] = encoded carrier end |
.restore(carrier, key: DEFAULT_KEY, link_executions: false, max_bytes: DEFAULT_MAX_BYTES) ⇒ Object
70 71 72 73 |
# File 'lib/julewire/core/propagation/carrier.rb', line 70 def restore(carrier, key: DEFAULT_KEY, link_executions: false, max_bytes: DEFAULT_MAX_BYTES, &) envelope = extract_result(carrier, key: key, max_bytes: max_bytes).envelope Propagation.restore(envelope, link_executions: link_executions, owned: true, &) end |
.serialized_envelope(envelope) ⇒ Object
75 76 77 78 79 |
# File 'lib/julewire/core/propagation/carrier.rb', line 75 def serialized_envelope(envelope) return Propagation.capture if envelope.equal?(DEFAULT_ENVELOPE) Serialization::Serializer.call(envelope) end |