class Traildb::TrailDBConstructor
Public Class Methods
new(path, ofields=[])
click to toggle source
Calls superclass method
# File lib/traildb.rb, line 136 def initialize(path, ofields=[]) raise TrailDBError.new("Path is required") if path.nil? super Traildb.tdb_cons_init() n = ofields.size ofield_names = FFI::MemoryPointer.new(:string, n) ofield_names.write_array_of_pointer(ofields.map{|field|FFI::MemoryPointer.from_string(field)}) ret = Traildb.tdb_cons_open(self, path, ofield_names, n) raise TrailDBError.new("Cannot open constructor", ret) if ret != 0 @path = path @ofields = ofields end
release(ptr)
click to toggle source
# File lib/traildb.rb, line 175 def self.release(ptr) Traildb.tdb_cons_close(ptr) end
Public Instance Methods
add(uuid, tstamp, values)
click to toggle source
# File lib/traildb.rb, line 148 def add(uuid, tstamp, values) tstamp = tstamp.to_i if tstamp.is_a? Time uuid = Traildb.uuid_raw(uuid) n = @ofields.size value_array = FFI::MemoryPointer.new(:string, n) value_array.write_array_of_pointer(values.map{|v|v.nil? ? nil : FFI::MemoryPointer.from_string(v)}) value_lengths = FFI::MemoryPointer.new(:uint64, n) value_lengths.write_array_of_uint64(values.map{|v|v.nil? ? 0 : v.size}) ret = Traildb.tdb_cons_add(self, uuid, tstamp, value_array, value_lengths) raise TrailDBError.new("Too many values: %s" % values[ret]) if ret != 0 end
append(db)
click to toggle source
# File lib/traildb.rb, line 160 def append(db) f = Traildb.tdb_cons_append(self, db) if f < 0 raise TrailDBError.new("Wrong number of fields: %d" % db.num_fields, f) elsif f > 0 raise TrailDBError.new("Too many values", f) end end
finalize()
click to toggle source
# File lib/traildb.rb, line 169 def finalize ret = Traildb.tdb_cons_finalize(self) raise TrailDBError.new("Could not finalize", ret) if ret != 0 TrailDB.new(@path) end