From ae49637463e91773f54ba3ecd798082e4d2c7cd8 Mon Sep 17 00:00:00 2001 From: Lam Pham-Sy Date: Fri, 26 Aug 2016 17:46:03 +0200 Subject: [PATCH] Calculate aligned object size Export function that calculates aligned object size --- node-eclib.js | 11 ++++++++++- src/cpp/libmain.cpp | 19 +++++++++++++++++-- src/cpp/libmain.h | 4 ++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/node-eclib.js b/node-eclib.js index c0ab34e..cb9afe5 100644 --- a/node-eclib.js +++ b/node-eclib.js @@ -226,7 +226,16 @@ ECLib.prototype = { hd: 0, ct: 0 }; - } + }, + + /** + * Get alignement size corresponding to a size + * @param {Number} objSize - object size + * @return {Number} aligned size + */ + getAlignedDataSize: function(objSize) { + return addon.EclGetAlignedDataSize(this.ins_id, objSize); + }, } module.exports = ECLib; diff --git a/src/cpp/libmain.cpp b/src/cpp/libmain.cpp index 6c23a02..77419e6 100644 --- a/src/cpp/libmain.cpp +++ b/src/cpp/libmain.cpp @@ -103,8 +103,23 @@ NAN_METHOD(EclVerifyStripeMetadata) { NAN_METHOD(EclGetAlignedDataSize) { Nan::HandleScope scope; - info.GetReturnValue() - .Set(Nan::New("C++ GetAlignedDataSize ").ToLocalChecked()); + + if (info.Length() != 2) { + Nan::ThrowTypeError("Wrong number of arguments EclGetAlignedDataSize"); + return ; + } + + ec_backend_t instance; + uint32_t aligned_size; + + int desc = Nan::To(info[0]).FromJust(); + int64_t obj_size = Nan::To(info[1]).FromJust(); + + instance = liberasurecode_backend_instance_get_by_desc(desc); + + aligned_size = get_aligned_data_size(instance, obj_size); + + info.GetReturnValue().Set(aligned_size); } NAN_METHOD(EclGetMinimumEncodeSize) { diff --git a/src/cpp/libmain.h b/src/cpp/libmain.h index a8a542e..f82a250 100644 --- a/src/cpp/libmain.h +++ b/src/cpp/libmain.h @@ -28,6 +28,10 @@ #include #include #include +extern "C" { +#include +#include +} NAN_METHOD(EclCreate); NAN_METHOD(EclDestroy);