class LogStash::Outputs::Application_insights::Block

Attributes

block_numbers[RW]
buffer[RW]
bytes[RW]
bytesize[RW]
done_time[RW]
events_count[RW]
oldest_event_time[RW]

Public Class Methods

generate_block_number() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 39
def self.generate_block_number
  @@semaphore.synchronize { @@Block_number = ( @@Block_number + 1 ) % 1000000 }
end
generate_block_numbers( count ) click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 43
def self.generate_block_numbers ( count )
  @@semaphore.synchronize { 
    firstNumber = ( @@Block_number + 1 ) % 1000000 
    @@Block_number = ( @@Block_number + count ) % 1000000
    firstNumber
  }
end
new( event_separator = "" ) click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 52
def initialize ( event_separator = "" )
  dispose
  @event_separator = event_separator
  @event_separator_bytesize = @event_separator.bytesize
end

Public Instance Methods

<<(data) click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 74
def << (data)
  @bytesize += data.bytesize + @event_separator_bytesize

  # if first data, it will accept even it overflows
  if is_overflowed? && @events_count > 0
    @bytesize -= data.bytesize + @event_separator_bytesize
    raise BlockTooSmallError if is_empty?
    raise BlockOverflowError
  end

  @oldest_event_time ||= Time.now.utc
  @events_count += 1
  @buffer << data
end
concat( other ) click to toggle source

concatenate two blocks into one

# File lib/logstash/outputs/application_insights/block.rb, line 59
def concat ( other )
  if @bytesize + other.bytesize <= BLOB_BLOCK_MAX_BYTESIZE
    if @block_numbers
      @block_numbers.concat( other.block_numbers )
      @bytes += other.bytes
      @done_time = other.done_time if other.done_time > @done_time
    else
      @buffer.concat( other.buffer )
    end
    @events_count += other.events_count
    @oldest_event_time = other.oldest_event_time if other.oldest_event_time < @oldest_event_time
    @bytesize += other.bytesize
  end
end
dispose() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 89
def dispose
  @bytes = nil
  @buffer = [  ]
  @bytesize = 0
  @events_count = 0
  @done_time = nil
  @oldest_event_time = nil
  @block_numbers = nil
end
is_full?() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 117
def is_full?
  @bytesize >= BLOB_BLOCK_MAX_BYTESIZE
end
partial_seal() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 100
def partial_seal
  if @done_time.nil?
    @done_time = Time.now.utc
    @buffer << "" # required to add eol after last event
    @bytes = @buffer.join( @event_separator )
    @buffer = nil # release the memory of the array
  end
end
seal() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 110
def seal
  if @done_time.nil?
    @block_numbers = [ Block.generate_block_number ]
    partial_seal
  end
end

Private Instance Methods

is_empty?() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 127
def is_empty?
  @bytesize <= 0
end
is_overflowed?() click to toggle source
# File lib/logstash/outputs/application_insights/block.rb, line 123
def is_overflowed?
  @bytesize > BLOB_BLOCK_MAX_BYTESIZE
end