class Px4LogReader::LogBufferArray
Attributes
buffers[R]
current_buffer_index[R]
Public Class Methods
new()
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 106 def initialize @buffers = [] @active_file = nil @current_buffer_index = 0 end
Public Instance Methods
load_buffers()
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 127 def load_buffers @buffers = [] @buffer_count.times do @buffers << LogBuffer.new( @buffer_size ) end @buffers.each do |buffer| buffer.write( @active_file ) end end
load_empty_buffers()
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 156 def load_empty_buffers inactive_buffer_index = ( @current_buffer_index + 1 ) % @buffer_count while ( inactive_buffer_index != @current_buffer_index ) do buffer = buffers[ inactive_buffer_index ] if buffer.empty? buffer.reset buffer.write( @active_file ) end inactive_buffer_index = ( inactive_buffer_index + 1 ) % @buffer_count end end
read( num_bytes )
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 139 def read( num_bytes ) data = '' while ( data.size < num_bytes ) do data << active_buffer.read( num_bytes ) if data.length < num_bytes increment_buffer break if active_buffer.empty? end end return data end
set_file( file, options = {} )
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 112 def set_file( file, options = {} ) opts = { buffer_count: 2, load_buffers: true, buffer_size: 1024 }.merge( options ) @active_file = file @buffer_count = opts[:buffer_count] @buffer_size = opts[:buffer_size] / opts[:buffer_count] load_buffers if opts[:load_buffers] end
Protected Instance Methods
active_buffer()
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 175 def active_buffer return @buffers[ @current_buffer_index ] end
increment_buffer()
click to toggle source
# File lib/px4_log_reader/log_buffer.rb, line 179 def increment_buffer @current_buffer_index = (@current_buffer_index + 1) % @buffer_count end