module Tros::DataFile
Constants
- MAGIC
- MAGIC_SIZE
- META_SCHEMA
- SYNC_INTERVAL
- SYNC_SIZE
- VALID_CODECS
TODO this constant won't be updated if you register another codec. Deprecated in favor of
Tros::DataFile::codecs
- VALID_ENCODINGS
- VERSION
Public Class Methods
codecs()
click to toggle source
# File lib/tros/data_file.rb 51 def self.codecs 52 @codecs 53 end
get_codec(codec)
click to toggle source
# File lib/tros/data_file.rb 61 def self.get_codec(codec) 62 codec ||= 'null' 63 if codec.respond_to?(:compress) && codec.respond_to?(:decompress) 64 codec # it's a codec instance 65 elsif codec.is_a?(Class) 66 codec.new # it's a codec class 67 elsif @codecs.include?(codec.to_s) 68 @codecs[codec.to_s] # it's a string or symbol (codec name) 69 else 70 raise DataFileError, "Unknown codec: #{codec.inspect}" 71 end 72 end
open(file_path, mode='r', schema=nil, codec=nil) { |io| ... }
click to toggle source
# File lib/tros/data_file.rb 31 def self.open(file_path, mode='r', schema=nil, codec=nil) 32 schema = Tros::Schema.parse(schema) if schema 33 case mode 34 when 'w' 35 unless schema 36 raise DataFileError, "Writing an Tros file requires a schema." 37 end 38 io = open_writer(File.open(file_path, 'wb'), schema, codec) 39 when 'r' 40 io = open_reader(File.open(file_path, 'rb'), schema) 41 else 42 raise DataFileError, "Only modes 'r' and 'w' allowed. You gave #{mode.inspect}." 43 end 44 45 yield io if block_given? 46 io 47 ensure 48 io.close if block_given? && io 49 end
register_codec(codec)
click to toggle source
# File lib/tros/data_file.rb 55 def self.register_codec(codec) 56 @codecs ||= {} 57 codec = codec.new if !codec.respond_to?(:codec_name) && codec.is_a?(Class) 58 @codecs[codec.codec_name.to_s] = codec 59 end
Private Class Methods
open_reader(file, schema)
click to toggle source
# File lib/tros/data_file.rb 81 def open_reader(file, schema) 82 reader = Tros::IO::DatumReader.new(nil, schema) 83 Tros::DataFile::Reader.new(file, reader) 84 end
open_writer(file, schema, codec=nil)
click to toggle source
# File lib/tros/data_file.rb 76 def open_writer(file, schema, codec=nil) 77 writer = Tros::IO::DatumWriter.new(schema) 78 Tros::DataFile::Writer.new(file, writer, schema, codec) 79 end