11# frozen_string_literal: true
22
3+ require_relative '../../core/workers/queue'
34require_relative '../../core/workers/polling'
45
5- require_relative 'batch'
66require_relative 'buffer'
7- require_relative 'context '
7+ require_relative 'batch_builder '
88
99module Datadog
1010 module OpenFeature
1111 module Exposures
12+ # This class is responsible for sending exposures to the Agent
1213 class Worker
1314 include Datadog ::Core ::Workers ::Queue
1415 include Datadog ::Core ::Workers ::Polling
@@ -18,17 +19,16 @@ class Worker
1819
1920 attr_reader :logger
2021
21- # NOTE: Context builder and the data model is not finished
2222 def initialize (
23+ settings :,
2324 transport :,
2425 logger : Datadog . logger ,
2526 flush_interval_seconds : DEFAULT_FLUSH_INTERVAL_SECONDS ,
26- buffer_limit : DEFAULT_BUFFER_LIMIT ,
27- context_builder : nil
27+ buffer_limit : DEFAULT_BUFFER_LIMIT
2828 )
2929 @logger = logger
3030 @transport = transport
31- @context_builder = context_builder || -> { Context . build }
31+ @batch_builder = BatchBuilder . new ( settings )
3232 @buffer_limit = buffer_limit
3333 @flush_mutex = Mutex . new
3434
@@ -67,12 +67,12 @@ def dequeue
6767
6868 def flush
6969 events , dropped = dequeue
70- send_events ( events || [ ] , dropped || 0 )
70+ send_events ( events || [ ] , dropped . to_i )
7171 end
7272
7373 def perform ( *args )
7474 events , dropped = args
75- send_events ( events || [ ] , dropped || 0 )
75+ send_events ( events || [ ] , dropped . to_i )
7676 end
7777
7878 private
@@ -84,7 +84,7 @@ def send_events(events, dropped)
8484 logger . debug { "OpenFeature: Exposure worker dropped #{ dropped } event(s) due to full buffer" }
8585 end
8686
87- payload = Batch . new ( context : @context_builder . call , exposures : events ) . to_h
87+ payload = @batch_builder . payload_for ( events )
8888 send_payload ( payload )
8989 end
9090
0 commit comments