作者:huansh
项目:ledisd
func (db *DB) NewIterator() driver.IIterator {
it := new(Iterator)
it.it = C.leveldb_create_iterator(db.db, db.iteratorOpts.Opt)
return it
}
作者:Goha
项目:ledisd
func (s *Snapshot) NewIterator() *Iterator {
it := new(Iterator)
it.it = C.leveldb_create_iterator(s.db.db, s.iteratorOpts.Opt)
return it
}
作者:reuse
项目:obo
func (self *Leveldb) Iter(fun func(string, Getter) bool) {
iterator := C.leveldb_create_iterator(self.cdb, self.read_options)
defer C.leveldb_iter_destroy(iterator)
var keyLen C.size_t
var keyValue *C.char
var valueLen C.size_t
var valueValue *C.char
var ret bool
for C.leveldb_iter_seek_to_first(iterator); C.leveldb_iter_valid(iterator) != levelFalse; C.leveldb_iter_next(iterator) {
keyValue = C.leveldb_iter_key(iterator, &keyLen)
key := string(C.GoBytes(unsafe.Pointer(keyValue), C.int(keyLen)))
valueValue = C.leveldb_iter_value(iterator, &valueLen)
value := C.GoBytes(unsafe.Pointer(valueValue), C.int(valueLen))
r := bytes.NewReader(value)
ret = fun(key, func(e interface{}) error {
return decode(r, e)
})
if ret == false {
break
}
}
}
作者:oleh
项目:hyperleveldb-g
// NewIterator returns an Iterator over the the database that uses the
// ReadOptions given.
//
// Often, this is used for large, offline bulk reads while serving live
// traffic. In that case, it may be wise to disable caching so that the data
// processed by the returned Iterator does not displace the already cached
// data. This can be done by calling SetFillCache(false) on the ReadOptions
// before passing it here.
//
// Similiarly, ReadOptions.SetSnapshot is also useful.
func (db *DB) NewIterator(ro *ReadOptions) *Iterator {
it := C.leveldb_create_iterator(db.Ldb, ro.Opt)
return &Iterator{Iter: it}
}