Class: Px4LogReader::MessageDescriptorCache
- Inherits:
-
Object
- Object
- Px4LogReader::MessageDescriptorCache
- Defined in:
- lib/px4_log_reader/message_descriptor_cache.rb
Instance Attribute Summary collapse
-
#cache_filename ⇒ Object
readonly
Returns the value of attribute cache_filename.
Instance Method Summary collapse
- #exist? ⇒ Boolean
-
#initialize(filename) ⇒ MessageDescriptorCache
constructor
A new instance of MessageDescriptorCache.
- #read_descriptors ⇒ Object
- #write_descriptors(message_descriptors) ⇒ Object
Constructor Details
#initialize(filename) ⇒ MessageDescriptorCache
Returns a new instance of MessageDescriptorCache.
7 8 9 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 7 def initialize( filename ) @cache_filename = filename end |
Instance Attribute Details
#cache_filename ⇒ Object (readonly)
Returns the value of attribute cache_filename.
5 6 7 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 5 def cache_filename @cache_filename end |
Instance Method Details
#exist? ⇒ Boolean
11 12 13 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 11 def exist? return File.exist?( @cache_filename ) end |
#read_descriptors ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 15 def read_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 ) ) [ 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 end |
#write_descriptors(message_descriptors) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 42 def write_descriptors( ) if !@cache_filename.empty? && File.exist?( File.dirname( @cache_filename ) ) File.open( @cache_filename, 'w+' ) do |output| .each do |,descriptor| descriptor_data = Marshal.dump( descriptor ) output.write( [ descriptor_data.size ].pack('L') ) output.write( descriptor_data ) end end end end |