Skip to content
This repository has been archived by the owner on Apr 5, 2018. It is now read-only.

Commit

Permalink
convert to NAN, fix & prepare for release
Browse files Browse the repository at this point in the history
  • Loading branch information
rvagg committed Sep 1, 2013
1 parent e8431d5 commit e722b13
Show file tree
Hide file tree
Showing 20 changed files with 575 additions and 718 deletions.
28 changes: 15 additions & 13 deletions binding.gyp
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
{
"targets": [{
"target_name": "nlmdb"
, "dependencies": [
"<(module_root_dir)/deps/liblmdb.gyp:liblmdb"
'targets': [{
'target_name': 'nlmdb'
, 'dependencies': [
'<(module_root_dir)/deps/liblmdb.gyp:liblmdb'
]
, "sources": [
"src/nlmdb.cc"
, "src/async.cc"
, "src/database.cc"
, "src/database_async.cc"
, "src/batch.cc"
, "src/batch_async.cc"
, "src/iterator.cc"
, "src/iterator_async.cc"
, 'include_dirs' : [
'<!(node -p -e "require(\'path\').dirname(require.resolve(\'nan\'))")'
]
, 'sources': [
'src/nlmdb.cc'
, 'src/database.cc'
, 'src/database_async.cc'
, 'src/batch.cc'
, 'src/batch_async.cc'
, 'src/iterator.cc'
, 'src/iterator_async.cc'
]
}]
}
50 changes: 25 additions & 25 deletions deps/liblmdb.gyp
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
{
"targets": [{
"target_name": "liblmdb"
, "variables": {
"lmdbversion": "20130601"
'targets': [{
'target_name': 'liblmdb'
, 'variables': {
'lmdbversion': '20130601'
}
, "defines": [ "MDB_DEBUG=1" ]
, "type": "static_library"
, "standalone_static_library": 1
, 'defines': [ 'MDB_DEBUG=1' ]
, 'type': 'static_library'
, 'standalone_static_library': 1
, 'direct_dependent_settings': {
'include_dirs': [
'liblmdb-<(lmdbversion)'
]
}
, "conditions": [
["OS == 'linux'", {
"cflags": [
"-Waddress"
, "-Wno-unused-but-set-variable"
, 'conditions': [
['OS == "linux"', {
'cflags': [
'-Waddress'
, '-Wno-unused-but-set-variable'
]
}]
]
, "sources": [
"liblmdb-<(lmdbversion)/mdb.c"
, "liblmdb-<(lmdbversion)/mdb_copy.c"
, "liblmdb-<(lmdbversion)/mdb_stat.c"
, "liblmdb-<(lmdbversion)/midl.c"
, 'sources': [
'liblmdb-<(lmdbversion)/mdb.c'
, 'liblmdb-<(lmdbversion)/mdb_copy.c'
, 'liblmdb-<(lmdbversion)/mdb_stat.c'
, 'liblmdb-<(lmdbversion)/midl.c'
]
, "test-sources": [
"liblmdb-<(lmdbversion)/mtest2.c"
, "liblmdb-<(lmdbversion)/mtest3.c"
, "liblmdb-<(lmdbversion)/mtest4.c"
, "liblmdb-<(lmdbversion)/mtest5.c"
, "liblmdb-<(lmdbversion)/mtest6.c"
, "liblmdb-<(lmdbversion)/mtest.c"
, "liblmdb-<(lmdbversion)/sample-mdb.c"
, 'test-sources': [
'liblmdb-<(lmdbversion)/mtest2.c'
, 'liblmdb-<(lmdbversion)/mtest3.c'
, 'liblmdb-<(lmdbversion)/mtest4.c'
, 'liblmdb-<(lmdbversion)/mtest5.c'
, 'liblmdb-<(lmdbversion)/mtest6.c'
, 'liblmdb-<(lmdbversion)/mtest.c'
, 'liblmdb-<(lmdbversion)/sample-mdb.c'
]
}]
}
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,20 @@
, "version" : "0.0.3"
, "main" : "lmdb.js"
, "dependencies" : {
"bindings" : "~1.1.0"
"bindings" : "~1.1.0"
, "nan" : "~0.3.1"
}
, "devDependencies" : {
"tap" : "*"
"tap" : "*"
, "rimraf" : "*"
, "abstract-leveldown" : "*"
}
, "repository" : {
"type" : "git"
, "url" : "https://github.com/rvagg/lmdb.git"
"type" : "git"
, "url" : "https://github.com/rvagg/lmdb.git"
}
, "scripts" : {
"test" : "tap ./test.js test/*-test.js --stderr"
"test" : "tap ./test.js test/*-test.js --stderr"
}
, "license" : "MIT"
}
75 changes: 0 additions & 75 deletions src/async.cc

This file was deleted.

51 changes: 34 additions & 17 deletions src/async.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,55 @@
* MIT +no-false-attribs License <https://github.com/rvagg/lmdb/blob/master/LICENSE>
*/

#ifndef NL_ASYNC_H
#define NL_ASYNC_H
#ifndef LD_ASYNC_H
#define LD_ASYNC_H

#include <node.h>
#include "nan.h"
#include "database.h"

namespace nlmdb {

/* abstract */ class AsyncWorker {
class Database;

/* abstract */ class AsyncWorker : public NanAsyncWorker {
public:
AsyncWorker (
nlmdb::Database* database
, v8::Persistent<v8::Function> callback
);

virtual ~AsyncWorker ();
uv_work_t request;
virtual void WorkComplete ();
virtual void Execute () =0;
, NanCallback *callback
) : NanAsyncWorker(callback), database(database) {
NanScope();
v8::Local<v8::Object> obj = v8::Object::New();
NanAssignPersistent(v8::Object, persistentHandle, obj);
}

protected:
void SetStatus (md_status status) {
this->status = status;

if (status.error.length() != 0) {
char *e = new char[status.error.length() + 1];
strcpy(e, status.error.c_str());
this->errmsg = e;
} else if (status.code != 0) {
const char *me = mdb_strerror(status.code);
char *e = new char[strlen(me) + 1];
strcpy(e, me);
this->errmsg = e;
}
}

void SetStatus (int code) {
md_status status;
status.code = code;
SetStatus(status);
}

Database* database;
v8::Persistent<v8::Function> callback;

md_status status;
virtual void HandleOKCallback ();
virtual void HandleErrorCallback ();
};

void AsyncExecute (uv_work_t* req);
void AsyncExecuteComplete (uv_work_t* req);
void AsyncQueueWorker (AsyncWorker* worker);

} // namespace nlmdb

#endif
Loading

0 comments on commit e722b13

Please sign in to comment.