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.
39 40 41 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 39 def initialize( filename ) @cache_filename = filename end |
Instance Attribute Details
#cache_filename ⇒ Object (readonly)
Returns the value of attribute cache_filename.
37 38 39 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 37 def cache_filename @cache_filename end |
Instance Method Details
#exist? ⇒ Boolean
43 44 45 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 43 def exist? return File.exist?( @cache_filename ) end |
#read_descriptors ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 47 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.}" puts error.backtrace.join("\n") end end else puts "Cache file '#{cache_filename}' not found" end return end |
#write_descriptors(message_descriptors) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/px4_log_reader/message_descriptor_cache.rb', line 74 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 |