Skip to content
This repository was archived by the owner on Dec 20, 2024. It is now read-only.

Commit 2355def

Browse files
rvaggLars-Magnus Skog
authored and
Lars-Magnus Skog
committed
cherry-picked b7272db, upgrade to NAN v2
this commit does not compile and only includes changes for leveldown updates to nan
1 parent b5c391b commit 2355def

21 files changed

+335
-373
lines changed

.dntrc

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,22 @@
22
## see https://github.com/rvagg/dnt
33

44
NODE_VERSIONS="\
5-
v0.10.31 \
6-
v0.11.13 \
5+
v0.10.40 \
6+
v0.12.7 \
77
"
88
IOJS_VERSIONS="\
9-
v1.0.1-release \
9+
v1.8.4 \
10+
v2.0.1 \
11+
v2.3.4 \
12+
v3.0.0-rc.3 \
1013
"
1114
OUTPUT_PREFIX="leveldown-"
1215
TEST_CMD="\
1316
cd /dnt/ && \
1417
npm install && \
15-
node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js \
16-
--nodedir /usr/src/node/ rebuild && \
17-
node_modules/.bin/tap test/*-test.js; \
18+
npm run-script prebuild \
19+
--nodedir=/usr/src/node/ && \
20+
node_modules/.bin/tape test/*-test.js \
1821
"
19-
22+
# for tape
23+
LOG_OK_CMD="tail -2 | head -1 | sed 's/^# //'"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"abstract-leveldown": "~2.2.1",
3232
"bindings": "~1.2.1",
3333
"fast-future": "~1.0.0",
34-
"nan": "~1.8.4"
34+
"nan": "~2.0.0"
3535
},
3636
"devDependencies": {
3737
"du": "~0.1.0",

src/async.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,12 @@ namespace leveldown {
1414

1515
class Database;
1616

17-
/* abstract */ class AsyncWorker : public NanAsyncWorker {
17+
/* abstract */ class AsyncWorker : public Nan::AsyncWorker {
1818
public:
1919
AsyncWorker (
2020
leveldown::Database* database
21-
, NanCallback *callback
22-
) : NanAsyncWorker(callback), database(database) {
23-
NanScope();
24-
v8::Local<v8::Object> obj = NanNew<v8::Object>();
25-
NanAssignPersistent(persistentHandle, obj);
26-
}
21+
, Nan::Callback *callback
22+
) : Nan::AsyncWorker(callback), database(database) { }
2723

2824
protected:
2925
void SetStatus(leveldb::Status status) {

src/batch.cc

Lines changed: 31 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace leveldown {
1111

12-
static v8::Persistent<v8::FunctionTemplate> batch_constructor;
12+
static Nan::Persistent<v8::FunctionTemplate> batch_constructor;
1313

1414
Batch::Batch (leveldown::Database* database, bool sync) : database(database) {
1515
options = new leveldb::WriteOptions();
@@ -28,45 +28,43 @@ leveldb::Status Batch::Write () {
2828
}
2929

3030
void Batch::Init () {
31-
v8::Local<v8::FunctionTemplate> tpl = NanNew<v8::FunctionTemplate>(Batch::New);
32-
NanAssignPersistent(batch_constructor, tpl);
33-
tpl->SetClassName(NanNew("Batch"));
31+
v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(Batch::New);
32+
batch_constructor.Reset(tpl);
33+
tpl->SetClassName(Nan::New("Batch").ToLocalChecked());
3434
tpl->InstanceTemplate()->SetInternalFieldCount(1);
35-
NODE_SET_PROTOTYPE_METHOD(tpl, "put", Batch::Put);
36-
NODE_SET_PROTOTYPE_METHOD(tpl, "del", Batch::Del);
37-
NODE_SET_PROTOTYPE_METHOD(tpl, "clear", Batch::Clear);
38-
NODE_SET_PROTOTYPE_METHOD(tpl, "write", Batch::Write);
35+
Nan::SetPrototypeMethod(tpl, "put", Batch::Put);
36+
Nan::SetPrototypeMethod(tpl, "del", Batch::Del);
37+
Nan::SetPrototypeMethod(tpl, "clear", Batch::Clear);
38+
Nan::SetPrototypeMethod(tpl, "write", Batch::Write);
3939
}
4040

4141
NAN_METHOD(Batch::New) {
42-
NanScope();
43-
44-
Database* database = node::ObjectWrap::Unwrap<Database>(args[0]->ToObject());
42+
Database* database = Nan::ObjectWrap::Unwrap<Database>(info[0]->ToObject());
4543
v8::Local<v8::Object> optionsObj;
4644

47-
if (args.Length() > 1 && args[1]->IsObject()) {
48-
optionsObj = v8::Local<v8::Object>::Cast(args[1]);
45+
if (info.Length() > 1 && info[1]->IsObject()) {
46+
optionsObj = v8::Local<v8::Object>::Cast(info[1]);
4947
}
5048

5149
bool sync = BooleanOptionValue(optionsObj, "sync");
5250

5351
Batch* batch = new Batch(database, sync);
54-
batch->Wrap(args.This());
52+
batch->Wrap(info.This());
5553

56-
NanReturnValue(args.This());
54+
info.GetReturnValue().Set(info.This());
5755
}
5856

5957
v8::Handle<v8::Value> Batch::NewInstance (
6058
v8::Handle<v8::Object> database
6159
, v8::Handle<v8::Object> optionsObj
6260
) {
6361

64-
NanEscapableScope();
62+
Nan::EscapableHandleScope scope;
6563

6664
v8::Local<v8::Object> instance;
6765

6866
v8::Local<v8::FunctionTemplate> constructorHandle =
69-
NanNew<v8::FunctionTemplate>(batch_constructor);
67+
Nan::New<v8::FunctionTemplate>(batch_constructor);
7068

7169
if (optionsObj.IsEmpty()) {
7270
v8::Handle<v8::Value> argv[1] = { database };
@@ -76,17 +74,15 @@ v8::Handle<v8::Value> Batch::NewInstance (
7674
instance = constructorHandle->GetFunction()->NewInstance(2, argv);
7775
}
7876

79-
return NanEscapeScope(instance);
77+
return scope.Escape(instance);
8078
}
8179

8280
NAN_METHOD(Batch::Put) {
83-
NanScope();
84-
85-
Batch* batch = ObjectWrap::Unwrap<Batch>(args.Holder());
81+
Batch* batch = ObjectWrap::Unwrap<Batch>(info.Holder());
8682
v8::Handle<v8::Function> callback; // purely for the error macros
8783

88-
v8::Local<v8::Value> keyBuffer = args[0];
89-
v8::Local<v8::Value> valueBuffer = args[1];
84+
v8::Local<v8::Value> keyBuffer = info[0];
85+
v8::Local<v8::Value> valueBuffer = info[1];
9086
LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
9187
LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
9288

@@ -97,17 +93,15 @@ NAN_METHOD(Batch::Put) {
9793
DisposeStringOrBufferFromSlice(keyBuffer, key);
9894
DisposeStringOrBufferFromSlice(valueBuffer, value);
9995

100-
NanReturnValue(args.Holder());
96+
info.GetReturnValue().Set(info.Holder());
10197
}
10298

10399
NAN_METHOD(Batch::Del) {
104-
NanScope();
105-
106-
Batch* batch = ObjectWrap::Unwrap<Batch>(args.Holder());
100+
Batch* batch = ObjectWrap::Unwrap<Batch>(info.Holder());
107101

108102
v8::Handle<v8::Function> callback; // purely for the error macros
109103

110-
v8::Local<v8::Value> keyBuffer = args[0];
104+
v8::Local<v8::Value> keyBuffer = info[0];
111105
LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
112106

113107
batch->batch->Delete(key);
@@ -116,38 +110,32 @@ NAN_METHOD(Batch::Del) {
116110

117111
DisposeStringOrBufferFromSlice(keyBuffer, key);
118112

119-
NanReturnValue(args.Holder());
113+
info.GetReturnValue().Set(info.Holder());
120114
}
121115

122116
NAN_METHOD(Batch::Clear) {
123-
NanScope();
124-
125-
Batch* batch = ObjectWrap::Unwrap<Batch>(args.Holder());
117+
Batch* batch = ObjectWrap::Unwrap<Batch>(info.Holder());
126118

127119
batch->batch->Clear();
128120
batch->hasData = false;
129121

130-
NanReturnValue(args.Holder());
122+
info.GetReturnValue().Set(info.Holder());
131123
}
132124

133125
NAN_METHOD(Batch::Write) {
134-
NanScope();
135-
136-
Batch* batch = ObjectWrap::Unwrap<Batch>(args.Holder());
126+
Batch* batch = ObjectWrap::Unwrap<Batch>(info.Holder());
137127

138128
if (batch->hasData) {
139-
NanCallback *callback =
140-
new NanCallback(v8::Local<v8::Function>::Cast(args[0]));
129+
Nan::Callback *callback =
130+
new Nan::Callback(v8::Local<v8::Function>::Cast(info[0]));
141131
BatchWriteWorker* worker = new BatchWriteWorker(batch, callback);
142132
// persist to prevent accidental GC
143-
v8::Local<v8::Object> _this = args.This();
133+
v8::Local<v8::Object> _this = info.This();
144134
worker->SaveToPersistent("batch", _this);
145-
NanAsyncQueueWorker(worker);
135+
Nan::AsyncQueueWorker(worker);
146136
} else {
147-
LD_RUN_CALLBACK(v8::Local<v8::Function>::Cast(args[0]), 0, NULL);
137+
LD_RUN_CALLBACK(v8::Local<v8::Function>::Cast(info[0]), 0, NULL);
148138
}
149-
150-
NanReturnUndefined();
151139
}
152140

153141
} // namespace leveldown

src/batch.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
namespace leveldown {
1212

13-
class Batch : public node::ObjectWrap {
13+
class Batch : public Nan::ObjectWrap {
1414
public:
1515
static void Init();
1616
static v8::Handle<v8::Value> NewInstance (

src/batch_async.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace leveldown {
1414

1515
BatchWriteWorker::BatchWriteWorker (
1616
Batch* batch
17-
, NanCallback *callback
17+
, Nan::Callback *callback
1818
) : AsyncWorker(NULL, callback)
1919
, batch(batch)
2020
{};

src/batch_async.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class BatchWriteWorker : public AsyncWorker {
1919
public:
2020
BatchWriteWorker (
2121
Batch* batch
22-
, NanCallback *callback
22+
, Nan::Callback *callback
2323
);
2424

2525
virtual ~BatchWriteWorker ();

src/common.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace leveldown {
1313
NAN_INLINE bool BooleanOptionValue(v8::Local<v8::Object> options,
1414
const char* _key,
1515
bool def = false) {
16-
v8::Handle<v8::String> key = NanNew(_key);
16+
v8::Handle<v8::String> key = Nan::New(_key).ToLocalChecked();
1717
return !options.IsEmpty()
1818
&& options->Has(key)
1919
? options->Get(key)->BooleanValue()
@@ -23,7 +23,7 @@ NAN_INLINE bool BooleanOptionValue(v8::Local<v8::Object> options,
2323
NAN_INLINE uint32_t UInt32OptionValue(v8::Local<v8::Object> options,
2424
const char* _key,
2525
uint32_t def) {
26-
v8::Handle<v8::String> key = NanNew(_key);
26+
v8::Handle<v8::String> key = Nan::New(_key).ToLocalChecked();
2727
return !options.IsEmpty()
2828
&& options->Has(key)
2929
&& options->Get(key)->IsNumber()

0 commit comments

Comments
 (0)