Add on_ready(), get_min_io_size(), get_max_atomic_write_size() to the node.js binding
This commit is contained in:
@@ -16,6 +16,9 @@ NAN_MODULE_INIT(InitAddon)
|
||||
Nan::SetPrototypeMethod(tpl, "write", NodeVitastor::Write);
|
||||
Nan::SetPrototypeMethod(tpl, "sync", NodeVitastor::Sync);
|
||||
Nan::SetPrototypeMethod(tpl, "read_bitmap", NodeVitastor::ReadBitmap);
|
||||
Nan::SetPrototypeMethod(tpl, "on_ready", NodeVitastor::OnReady);
|
||||
Nan::SetPrototypeMethod(tpl, "get_min_io_size", NodeVitastor::GetMinIoSize);
|
||||
Nan::SetPrototypeMethod(tpl, "get_max_atomic_write_size", NodeVitastor::GetMaxAtomicWriteSize);
|
||||
//Nan::SetPrototypeMethod(tpl, "destroy", NodeVitastor::Destroy);
|
||||
|
||||
Nan::Set(target, Nan::New("Client").ToLocalChecked(), Nan::GetFunction(tpl).ToLocalChecked());
|
||||
|
||||
@@ -267,6 +267,53 @@ static void on_error(NodeVitastorRequest *req, Nan::Callback & nanCallback, long
|
||||
nanCallback.Call(1, args, req);
|
||||
}
|
||||
|
||||
// on_ready(callback(err))
|
||||
NAN_METHOD(NodeVitastor::OnReady)
|
||||
{
|
||||
TRACE("NodeVitastor::OnReady");
|
||||
if (info.Length() < 1)
|
||||
Nan::ThrowError("Not enough arguments to on_ready(callback(err))");
|
||||
NodeVitastor* self = Nan::ObjectWrap::Unwrap<NodeVitastor>(info.This());
|
||||
v8::Local<v8::Function> callback = info[0].As<v8::Function>();
|
||||
auto req = new NodeVitastorRequest(self, callback);
|
||||
self->Ref();
|
||||
vitastor_c_on_ready(self->c, on_ready_finish, req);
|
||||
}
|
||||
|
||||
void NodeVitastor::on_ready_finish(void *opaque, long retval)
|
||||
{
|
||||
TRACE("NodeVitastor::on_ready_finish");
|
||||
auto req = (NodeVitastorRequest*)opaque;
|
||||
auto self = req->cli;
|
||||
Nan::HandleScope scope;
|
||||
Nan::Callback nanCallback(Nan::New(req->callback));
|
||||
nanCallback.Call(0, NULL, req);
|
||||
self->Unref();
|
||||
delete req;
|
||||
}
|
||||
|
||||
// get_min_io_size(pool_id)
|
||||
NAN_METHOD(NodeVitastor::GetMinIoSize)
|
||||
{
|
||||
TRACE("NodeVitastor::GetMinIoSize");
|
||||
if (info.Length() < 1)
|
||||
Nan::ThrowError("Not enough arguments to get_min_io_size(pool_id)");
|
||||
NodeVitastor* self = Nan::ObjectWrap::Unwrap<NodeVitastor>(info.This());
|
||||
uint64_t pool = get_ui64(info[0]);
|
||||
info.GetReturnValue().Set(Nan::New<v8::Number>(vitastor_c_inode_get_bitmap_granularity(self->c, INODE_WITH_POOL(pool, 1))));
|
||||
}
|
||||
|
||||
// get_max_atomic_write_size(pool_id)
|
||||
NAN_METHOD(NodeVitastor::GetMaxAtomicWriteSize)
|
||||
{
|
||||
TRACE("NodeVitastor::GetMaxAtomicWriteSize");
|
||||
if (info.Length() < 1)
|
||||
Nan::ThrowError("Not enough arguments to get_max_atomic_write_size(pool_id)");
|
||||
NodeVitastor* self = Nan::ObjectWrap::Unwrap<NodeVitastor>(info.This());
|
||||
uint64_t pool = get_ui64(info[0]);
|
||||
info.GetReturnValue().Set(Nan::New<v8::Number>(vitastor_c_inode_get_block_size(self->c, INODE_WITH_POOL(pool, 1))));
|
||||
}
|
||||
|
||||
void NodeVitastor::on_read_finish(void *opaque, long retval, uint64_t version)
|
||||
{
|
||||
TRACE("NodeVitastor::on_read_finish");
|
||||
|
||||
+10
-3
@@ -15,14 +15,20 @@ class NodeVitastor: public Nan::ObjectWrap
|
||||
public:
|
||||
// constructor({ ...config })
|
||||
static NAN_METHOD(Create);
|
||||
// read(pool, inode, offset, len, callback(err, buffer, version))
|
||||
// read(pool_id, inode, offset, len, callback(err, buffer, version))
|
||||
static NAN_METHOD(Read);
|
||||
// write(pool, inode, offset, buf: Buffer | Buffer[], { version }?, callback(err))
|
||||
// write(pool_id, inode, offset, buf: Buffer | Buffer[], { version }?, callback(err))
|
||||
static NAN_METHOD(Write);
|
||||
// sync(callback(err))
|
||||
static NAN_METHOD(Sync);
|
||||
// read_bitmap(pool, inode, offset, len, with_parents, callback(err, bitmap_buffer))
|
||||
// read_bitmap(pool_id, inode, offset, len, with_parents, callback(err, bitmap_buffer))
|
||||
static NAN_METHOD(ReadBitmap);
|
||||
// on_ready(callback(err))
|
||||
static NAN_METHOD(OnReady);
|
||||
// get_min_io_size(pool_id)
|
||||
static NAN_METHOD(GetMinIoSize);
|
||||
// get_max_atomic_write_size(pool_id)
|
||||
static NAN_METHOD(GetMaxAtomicWriteSize);
|
||||
// // destroy()
|
||||
// static NAN_METHOD(Destroy);
|
||||
|
||||
@@ -37,6 +43,7 @@ private:
|
||||
|
||||
static void on_io_readable(uv_poll_t* handle, int status, int revents);
|
||||
static void on_read_finish(void *opaque, long retval, uint64_t version);
|
||||
static void on_ready_finish(void *opaque, long retval);
|
||||
static void on_write_finish(void *opaque, long retval);
|
||||
static void on_read_bitmap_finish(void *opaque, long retval, uint8_t *bitmap);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user