// IteratorSequenceInit create an iterator to traverse a ForestDB snapshot by sequence number range func (k *KVStore) IteratorSequenceInit(startSeq, endSeq SeqNum, opt IteratorOpt) (*Iterator, error) { k.Lock() defer k.Unlock() rv := Iterator{db: k} Log.Tracef("fdb_iterator_sequence_init call k:%p db:%v sseq:%v eseq:%v opt:%v", k, k.db, startSeq, endSeq, opt) errNo := C.fdb_iterator_sequence_init(k.db, &rv.iter, C.fdb_seqnum_t(startSeq), C.fdb_seqnum_t(endSeq), C.fdb_iterator_opt_t(opt)) Log.Tracef("fdb_iterator_sequence_init retn k:%p rv:%v", k, rv.iter) if errNo != RESULT_SUCCESS { return nil, Error(errNo) } return &rv, nil }
// IteratorInit creates an iterator to traverse a ForestDB snapshot by key range func (k *KVStore) IteratorInit(startKey, endKey []byte, opt IteratorOpt) (*Iterator, error) { k.Lock() defer k.Unlock() var sk, ek unsafe.Pointer lensk := len(startKey) lenek := len(endKey) if lensk != 0 { sk = unsafe.Pointer(&startKey[0]) } if lenek != 0 { ek = unsafe.Pointer(&endKey[0]) } rv := Iterator{db: k} Log.Tracef("fdb_iterator_init call k:%p db:%v sk:%v ek:%v opt:%v", k, k.db, sk, ek, opt) errNo := C.fdb_iterator_init(k.db, &rv.iter, sk, C.size_t(lensk), ek, C.size_t(lenek), C.fdb_iterator_opt_t(opt)) Log.Tracef("fdb_iterator_init retn k:%p rv:%v", k, rv.iter) if errNo != RESULT_SUCCESS { return nil, Error(errNo) } return &rv, nil }