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