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