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