Class: Segment::Analytics::MessageBatch

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Defaults::MessageBatch, Logging
Defined in:
lib/segment/analytics/message_batch.rb

Overview

A batch of ‘Message`s to be sent to the API

Constant Summary

Constants included from Defaults::MessageBatch

Defaults::MessageBatch::MAX_BYTES, Defaults::MessageBatch::MAX_SIZE

Instance Method Summary collapse

Methods included from Logging

included, #logger

Constructor Details

#initialize(max_message_count) ⇒ MessageBatch

Returns a new instance of MessageBatch.



11
12
13
14
15
# File 'lib/segment/analytics/message_batch.rb', line 11

def initialize(max_message_count)
  @messages = []
  @max_message_count = max_message_count
  @json_size = 0
end

Instance Method Details

#<<(message) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/segment/analytics/message_batch.rb', line 17

def <<(message)
  if message.too_big?
    logger.error('a message exceeded the maximum allowed size')
  else
    @messages << message
    @json_size += message.json_size + 1 # One byte for the comma
  end
end

#clearObject



30
31
32
33
# File 'lib/segment/analytics/message_batch.rb', line 30

def clear
  @messages.clear
  @json_size = 0
end

#full?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/segment/analytics/message_batch.rb', line 26

def full?
  item_count_exhausted? || size_exhausted?
end