class FDB::Cluster

def self.finalize(ptr)

def self.finalize(ptr)
  proc do
    # puts "Destroying cluster #{ptr}"
    FDBC.fdb_cluster_destroy(ptr)
  end
end

def initialize(cpointer)

def initialize(cpointer)
  @cpointer = cpointer
  @options = ClusterOptions.new lambda { |code, param|
    FDBC.check_error FDBC.fdb_cluster_set_option(cpointer, code, param, param.nil? ? 0 : param.bytesize)
  }
  ObjectSpace.define_finalizer(self, self.class.finalize(@cpointer))
end

def open_database(name="DB")

def open_database(name="DB")
  f = FDBC.fdb_cluster_create_database(@cpointer, name, name.bytesize)
  dpointer = FFI::MemoryPointer.new :pointer
  FDBC.check_error FDBC.fdb_future_block_until_ready(f)
  FDBC.check_error FDBC.fdb_future_get_database(f, dpointer)
  Database.new dpointer.get_pointer(0)
end