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