Skip to content

Commit

Permalink
simplify deferred open
Browse files Browse the repository at this point in the history
  • Loading branch information
dominictarr committed Mar 3, 2013
1 parent 13cfb43 commit d189491
Showing 1 changed file with 20 additions and 17 deletions.
37 changes: 20 additions & 17 deletions lib/levelup.js
Expand Up @@ -118,6 +118,21 @@ var leveldown = require('leveldown')
}.bind(this)) }.bind(this))
}.bind(this) }.bind(this)


var deferred = {}
var self = this

;['get', 'put', 'batch', 'del', 'approximateSize']
.forEach(function (name) {
deferred[name] = function () {
var args = [].slice.call(arguments)
self.once('ready', function () {
self._db[name].apply(self._db, args)
})
}
})

this._db = deferred

execute() execute()
this.emit('opening') this.emit('opening')
} }
Expand Down Expand Up @@ -148,18 +163,6 @@ var leveldown = require('leveldown')


LevelUP.prototype.isClosed = function () { return (/^clos/).test(status) } LevelUP.prototype.isClosed = function () { return (/^clos/).test(status) }


function defer(db, fun) {
return function () {
if(isOpening()) {
var args = [].slice.call(arguments)
return db.once('ready', function () {
db._db[fun].apply(db._db, args)
})
}
return db._db[fun].apply(db._db, arguments)
}
}

LevelUP.prototype.get = function (key_, options, callback) { LevelUP.prototype.get = function (key_, options, callback) {
var key var key
, valueEnc , valueEnc
Expand All @@ -177,7 +180,7 @@ var leveldown = require('leveldown')
valueEnc = valueEncoding(options) valueEnc = valueEncoding(options)
options.asBuffer = valueEnc != 'utf8' && valueEnc != 'json' options.asBuffer = valueEnc != 'utf8' && valueEnc != 'json'


defer(this, 'get')(key, options, function (err, value) { this._db.get(key, options, function (err, value) {
if (err) { if (err) {
err = new errors.NotFoundError( err = new errors.NotFoundError(
'Key not found in database [' + key_ + ']') 'Key not found in database [' + key_ + ']')
Expand All @@ -204,7 +207,7 @@ var leveldown = require('leveldown')
key = toSlice[keyEncoding(options)](key_) key = toSlice[keyEncoding(options)](key_)
value = toSlice[valueEncoding(options)](value_) value = toSlice[valueEncoding(options)](value_)


defer(this, 'put')(key, value, options, function (err) { this._db.put(key, value, options, function (err) {
if (err) { if (err) {
err = new errors.WriteError(err) err = new errors.WriteError(err)
return dispatchError(err, callback) return dispatchError(err, callback)
Expand All @@ -230,7 +233,7 @@ var leveldown = require('leveldown')
options = getOptions(options) options = getOptions(options)
key = toSlice[keyEncoding(options)](key_) key = toSlice[keyEncoding(options)](key_)


defer(this, 'del')(key, options, function (err) { this._db.del(key, options, function (err) {
if (err) { if (err) {
err = new errors.WriteError(err) err = new errors.WriteError(err)
return dispatchError(err, callback) return dispatchError(err, callback)
Expand Down Expand Up @@ -280,7 +283,7 @@ var leveldown = require('leveldown')
arr = arr_ arr = arr_
} }


defer(this, 'batch')(arr, options, function (err) { this._db.batch(arr, options, function (err) {
if (err) { if (err) {
err = new errors.WriteError(err) err = new errors.WriteError(err)
return dispatchError(err, callback) return dispatchError(err, callback)
Expand All @@ -300,7 +303,7 @@ var leveldown = require('leveldown')
return dispatchError(err, callback) return dispatchError(err, callback)
} }


defer(this, 'approximateSize')(start, end, function(err, size) { this._db.approximateSize(start, end, function(err, size) {
if (err) { if (err) {
err = new errors.OpenError(err) err = new errors.OpenError(err)
return dispatchError(err, callback) return dispatchError(err, callback)
Expand Down

0 comments on commit d189491

Please sign in to comment.