Skip to content

Commit

Permalink
Stub out iterator methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ralphtheninja committed Dec 15, 2018
1 parent e37cda0 commit 085ef08
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 5 deletions.
1 change: 1 addition & 0 deletions binding.js
@@ -0,0 +1 @@
module.exports = require('node-gyp-build')(__dirname)
9 changes: 5 additions & 4 deletions iterator.js
@@ -1,11 +1,12 @@
const util = require('util')
const AbstractIterator = require('abstract-leveldown').AbstractIterator
const fastFuture = require('fast-future')
const binding = require('./binding')

function Iterator (db, options) {
AbstractIterator.call(this, db)

this.binding = db.binding.iterator(options)
this.context = binding.iterator(db.context, options)
this.cache = null
this.finished = false
this.fastFuture = fastFuture()
Expand All @@ -19,7 +20,7 @@ Iterator.prototype._seek = function (target) {
}

this.cache = null
this.binding.seek(target)
binding.iterator_seek(this.context, target)
this.finished = false
}

Expand All @@ -40,7 +41,7 @@ Iterator.prototype._next = function (callback) {
callback()
})
} else {
this.binding.next(function (err, array, finished) {
binding.iterator_next(this.context, function (err, array, finished) {
if (err) return callback(err)

that.cache = array
Expand All @@ -54,7 +55,7 @@ Iterator.prototype._next = function (callback) {

Iterator.prototype._end = function (callback) {
delete this.cache
this.binding.end(callback)
binding.iterator_end(this.context, callback)
}

module.exports = Iterator
2 changes: 1 addition & 1 deletion leveldown.js
@@ -1,6 +1,6 @@
const util = require('util')
const AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN
const binding = require('node-gyp-build')(__dirname)
const binding = require('./binding')
const ChainedBatch = require('./chained-batch')
const Iterator = require('./iterator')

Expand Down
49 changes: 49 additions & 0 deletions napi/leveldown.cc
Expand Up @@ -382,8 +382,57 @@ NAPI_METHOD(db_put) {
NAPI_RETURN_UNDEFINED();
}

/**
* Creates an iterator.
*/
NAPI_METHOD(iterator) {
NAPI_ARGV(2);
NAPI_DB_CONTEXT();

// TODO assume options object is always passed in! it will
// make the code simpler

// TODO return an external for IteratorContext
NAPI_RETURN_UNDEFINED();
}

/**
* Seeks an iterator.
*/
NAPI_METHOD(iterator_seek) {
NAPI_ARGV(2);
// NAPI_ITERATOR_CONTEXT();

NAPI_RETURN_UNDEFINED();
}

/**
* Moves an iterator to next element.
*/
NAPI_METHOD(iterator_next) {
NAPI_ARGV(2);
// NAPI_ITERATOR_CONTEXT();

NAPI_RETURN_UNDEFINED();
}

/**
* Ends an iterator.
*/
NAPI_METHOD(iterator_end) {
NAPI_ARGV(2);
// NAPI_ITERATOR_CONTEXT();

NAPI_RETURN_UNDEFINED();
}

NAPI_INIT() {
NAPI_EXPORT_FUNCTION(db);
NAPI_EXPORT_FUNCTION(db_open);
NAPI_EXPORT_FUNCTION(db_put);

NAPI_EXPORT_FUNCTION(iterator);
NAPI_EXPORT_FUNCTION(iterator_seek);
NAPI_EXPORT_FUNCTION(iterator_next);
NAPI_EXPORT_FUNCTION(iterator_end);
}

0 comments on commit 085ef08

Please sign in to comment.