Class: Chronos::Core::TelemetrySerializer
- Inherits:
-
Object
- Object
- Chronos::Core::TelemetrySerializer
- Defined in:
- lib/chronos/core/telemetry_event.rb
Overview
Serializes framework telemetry into the common Chronos event envelope.
Instance Method Summary collapse
- #call(event) ⇒ Object
-
#initialize(config, clock = nil, options = {}) ⇒ TelemetrySerializer
constructor
A new instance of TelemetrySerializer.
Constructor Details
#initialize(config, clock = nil, options = {}) ⇒ TelemetrySerializer
Returns a new instance of TelemetrySerializer.
64 65 66 67 68 69 70 71 |
# File 'lib/chronos/core/telemetry_event.rb', line 64 def initialize(config, clock = nil, = {}) @config = config @clock = clock || proc { Time.now } @sanitizer = [:sanitizer] || Sanitizer.new(config) @safe_serializer = [:safe_serializer] || SafeSerializer.new @max_payload_size = [:max_payload_size] || proc { @config.max_payload_size } @runtime_info = RuntimeInfo.new end |
Instance Method Details
#call(event) ⇒ Object
73 74 75 76 77 78 79 80 81 82 |
# File 'lib/chronos/core/telemetry_event.rb', line 73 def call(event) raise ArgumentError, "event must be a TelemetryEvent" unless event.is_a?(TelemetryEvent) envelope = @safe_serializer.call(@sanitizer.call(build_envelope(event))) body = JSON.generate(envelope) body = JSON.generate(compact_envelope(envelope)) if body.bytesize > @max_payload_size.call raise Error, "event exceeds max_payload_size" if body.bytesize > @max_payload_size.call SerializedEvent.new(event.event_id, body) end |