class Px4LogReader::MessageDescriptorCache

Attributes

cache_filename[R]

Public Class Methods

new( filename ) click to toggle source
# File lib/px4_log_reader/message_descriptor_cache.rb, line 39
def initialize( filename )
        @cache_filename = filename
end

Public Instance Methods

exist?() click to toggle source
# File lib/px4_log_reader/message_descriptor_cache.rb, line 43
def exist?
        return File.exist?( @cache_filename )
end
read_descriptors() click to toggle source
# File lib/px4_log_reader/message_descriptor_cache.rb, line 47
def read_descriptors

        message_descriptors = {}

        if File.exist?( cache_filename )
                File.open( cache_filename, 'r' ) do |input|
                        begin
                                while ( ( data = input.read(4) ) && ( data.length == 4 ) ) do
                                        descriptor_size = data.unpack('L').first
                                        descriptor = Marshal.load( input.read( descriptor_size ) )

                                        message_descriptors[ descriptor.type ] = descriptor
                                        end
                        rescue EOFError => error
                                puts "Parsed #{@message_descriptions.size} cached message descriptions"
                        rescue StandardError => error
                                puts "#{error.class}: #{error.message}"
                                puts error.backtrace.join("\n")
                        end
                end
        else
                puts "Cache file '#{cache_filename}' not found"
        end

        return message_descriptors
end
write_descriptors( message_descriptors ) click to toggle source
# File lib/px4_log_reader/message_descriptor_cache.rb, line 74
def write_descriptors( message_descriptors )
        if !@cache_filename.empty? && File.exist?( File.dirname( @cache_filename ) )
                File.open( @cache_filename, 'w+' ) do |output|
                        message_descriptors.each do |message_type,descriptor|
                                descriptor_data = Marshal.dump( descriptor )
                                output.write( [ descriptor_data.size ].pack('L') )
                                output.write( descriptor_data )
                        end
                end
        end
end