class FDB::FutureKeyValueArray

def wait

def wait
  block_until_ready
  kvs = FFI::MemoryPointer.new :pointer
  count = FFI::MemoryPointer.new :int
  more = FFI::MemoryPointer.new :int
  FDBC.check_error FDBC.fdb_future_get_keyvalue_array(@fpointer, kvs, count, more)
  kvs = kvs.read_pointer
  [(0..count.read_int-1).map{|i|
    x = FDBC::KeyValueStruct.new(kvs + (i * FDBC::KeyValueStruct.size))
    KeyValue.new(x[:key].read_bytes(x[:key_length]),
                 x[:value].read_bytes(x[:value_length]))
   }, count.read_int, more.read_int]
end