Class: Datadog::CI::Transport::EventPlatformTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/ci/transport/event_platform_transport.rb

Constant Summary collapse

DEFAULT_MAX_PAYLOAD_SIZE =
5 * 1024 * 1024

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api:, max_payload_size: DEFAULT_MAX_PAYLOAD_SIZE) ⇒ EventPlatformTransport

Returns a new instance of EventPlatformTransport.



17
18
19
20
# File 'lib/datadog/ci/transport/event_platform_transport.rb', line 17

def initialize(api:, max_payload_size: DEFAULT_MAX_PAYLOAD_SIZE)
  @api = api
  @max_payload_size = max_payload_size
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



14
15
16
# File 'lib/datadog/ci/transport/event_platform_transport.rb', line 14

def api
  @api
end

#max_payload_sizeObject (readonly)

Returns the value of attribute max_payload_size.



14
15
16
# File 'lib/datadog/ci/transport/event_platform_transport.rb', line 14

def max_payload_size
  @max_payload_size
end

Instance Method Details

#send_events(events) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/datadog/ci/transport/event_platform_transport.rb', line 22

def send_events(events)
  return [] if events.nil? || events.empty?

  Datadog.logger.debug { "[#{self.class.name}] Sending #{events.count} events..." }

  encoded_events = encode_events(events)
  if encoded_events.empty?
    Datadog.logger.debug { "[#{self.class.name}] Empty encoded events list, skipping send" }
    return []
  end

  responses = []

  Datadog::Core::Chunker.chunk_by_size(encoded_events, max_payload_size).map do |chunk|
    encoded_payload = pack_events(chunk)
    Datadog.logger.debug do
      "[#{self.class.name}] Send chunk of #{chunk.count} events; payload size #{encoded_payload.size}"
    end

    response = send_payload(encoded_payload)

    responses << response
  end

  responses
end