Skip to content

Commit

Permalink
Refactor according to updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Sampson Gao committed Jan 25, 2017
1 parent a68c4c4 commit 4ef3c7b
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 59 deletions.
12 changes: 6 additions & 6 deletions src/batch.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ leveldb::Status Batch::Write () {
}

void Batch::Init (napi_env env) {
napi_method_descriptor methods[] = {
{ Batch::Put, "put" },
{ Batch::Del, "del" },
{ Batch::Clear, "clear" },
{ Batch::Write, "write" },
napi_property_descriptor methods[] = {
{ "put", Batch::Put },
{ "del", Batch::Del },
{ "clear", Batch::Clear },
{ "write", Batch::Write },
};

napi_value ctor = napi_create_constructor_for_wrap_with_methods(env, Batch::New, "Batch", 4, methods);
napi_value ctor = napi_create_constructor(env, "Batch", Batch::New, nullptr, 4, methods);

batch_constructor = napi_create_persistent(env, ctor);
}
Expand Down
64 changes: 22 additions & 42 deletions src/database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ void Database::CloseDatabase () {

/* V8 exposed functions *****************************/

void LevelDOWN (napi_env env, napi_func_cb_info info) {
void LevelDOWN (napi_env env, napi_callback_info info) {
napi_value args[1];
napi_get_cb_args(env, info, args, 1);

Expand All @@ -137,19 +137,19 @@ void LevelDOWN (napi_env env, napi_func_cb_info info) {
}

void Database::Init (napi_env env) {
napi_method_descriptor methods [] = {
{ Database::Open, "open" },
{ Database::Close, "close" },
{ Database::Put, "put" },
{ Database::Get, "get" },
{ Database::Delete, "del" },
{ Database::Batch, "batch" },
{ Database::ApproximateSize, "approximateSize" },
{ Database::GetProperty, "getProperty" },
{ Database::Iterator, "iterator" },
napi_property_descriptor methods [] = {
{ "open", Database::Open },
{ "close", Database::Close },
{ "put", Database::Put },
{ "get", Database::Get },
{ "del", Database::Delete },
{ "batch", Database::Batch },
{ "approximateSize", Database::ApproximateSize },
{ "getProperty", Database::GetProperty },
{ "iterator", Database::Iterator },
};

napi_value ctor = napi_create_constructor_for_wrap_with_methods(env, Database::New, "Database", 9, methods);
napi_value ctor = napi_create_constructor(env, "Database", Database::New, nullptr, 9, methods);

database_constructor = napi_create_persistent(env, ctor);
}
Expand Down Expand Up @@ -270,7 +270,7 @@ NAPI_METHOD(Database::Close) {
napi_propertyname pnEnd = napi_property_name(env, "end");
napi_value end = napi_get_property(env, iteratorHandle, pnEnd);
napi_value argv [] = {
napi_create_function(env, EmptyMethod) // empty callback
napi_create_function(env, EmptyMethod, nullptr) // empty callback
};
napi_make_callback(
env
Expand Down Expand Up @@ -492,40 +492,20 @@ NAPI_METHOD(Database::Iterator) {
uint32_t id = database->currentIteratorId++;

napi_value iteratorHandle;
struct try_catch_data {
napi_value& iteratorHandle;
napi_value& _this;
uint32_t& id;
napi_value& optionsObj;
} data = {
iteratorHandle,
_this,
id,
optionsObj
};

bool did_catch = napi_try_catch(
env
, [](napi_env env, void* data) {
try_catch_data* d = static_cast<try_catch_data*>(data);
d->iteratorHandle = Iterator::NewInstance(
env
, d->_this
, napi_create_number(env, d->id)
, d->optionsObj
);
}
, [](napi_env env, void* data) {
// NB: node::FatalException can segfault here if there is no room on stack.
napi_throw_error(env, "Fatal Error in Database::Iterator!");
}
, &data
iteratorHandle = Iterator::NewInstance(
env
, _this
, napi_create_number(env, id)
, optionsObj
);

if (did_catch) {
return;
if (napi_is_exception_pending(env)) {
// NB: node::FatalException can segfault here if there is no room on stack.
napi_throw_error(env, "Fatal Error in Database::Iterator!");
}


leveldown::Iterator *iterator =
static_cast<leveldown::Iterator*>(napi_unwrap(env, iteratorHandle));

Expand Down
2 changes: 1 addition & 1 deletion src/database.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

namespace leveldown {

void LevelDOWN (napi_env env, napi_func_cb_info info);
void LevelDOWN (napi_env env, napi_callback_info info);

class Database {
public:
Expand Down
10 changes: 5 additions & 5 deletions src/iterator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -316,13 +316,13 @@ NAPI_METHOD(Iterator::End) {
}

void Iterator::Init (napi_env env) {
napi_method_descriptor methods [] = {
{ Iterator::Seek, "seek" },
{ Iterator::Next, "next" },
{ Iterator::End, "end" },
napi_property_descriptor methods [] = {
{ "seek", Iterator::Seek },
{ "next", Iterator::Next },
{ "end", Iterator::End },
};

napi_value ctor = napi_create_constructor_for_wrap_with_methods(env, Iterator::New, "Iterator", 3, methods);
napi_value ctor = napi_create_constructor(env, "Iterator", Iterator::New, nullptr, 3, methods);

iterator_constructor = napi_create_persistent(env, ctor);
}
Expand Down
10 changes: 5 additions & 5 deletions src/leveldown.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

namespace leveldown {

void DestroyDB (napi_env env, napi_func_cb_info info) {
void DestroyDB (napi_env env, napi_callback_info info) {
napi_value args[2];
napi_get_cb_args(env, info, args, 2);

Expand All @@ -32,7 +32,7 @@ void DestroyDB (napi_env env, napi_func_cb_info info) {
napi_set_return_value(env, info, napi_get_undefined_(env));
}

void RepairDB (napi_env env, napi_func_cb_info info) {
void RepairDB (napi_env env, napi_callback_info info) {
napi_value args[2];
napi_get_cb_args(env, info, args, 2);

Expand All @@ -59,10 +59,10 @@ void Init(napi_env env, napi_value target, napi_value module) {
napi_propertyname nameRepair = napi_property_name(env, "repair");
napi_propertyname nameLeveldown = napi_property_name(env, "leveldown");

napi_value leveldown = napi_create_function(env, LevelDOWN);
napi_value leveldown = napi_create_function(env, LevelDOWN, nullptr);

napi_set_property(env, leveldown, nameDestroy, napi_create_function(env, DestroyDB));
napi_set_property(env, leveldown, nameRepair, napi_create_function(env, RepairDB));
napi_set_property(env, leveldown, nameDestroy, napi_create_function(env, DestroyDB, nullptr));
napi_set_property(env, leveldown, nameRepair, napi_create_function(env, RepairDB, nullptr));

napi_set_property(env, target, nameLeveldown, leveldown);
}
Expand Down

0 comments on commit 4ef3c7b

Please sign in to comment.