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