Skip to content
This repository was archived by the owner on Jan 17, 2022. It is now read-only.

Commit dc66441

Browse files
committed
Create fragment header
Export function that creates header of a fragment.
1 parent 0c0093e commit dc66441

4 files changed

Lines changed: 46 additions & 2 deletions

File tree

node-eclib.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,13 @@ ECLib.prototype = {
226226
hd: 0,
227227
ct: 0
228228
};
229-
}
229+
},
230+
231+
addFragmentHeader: function(fragment, fragment_index, object_size,
232+
fragment_size) {
233+
return addon.EclAddFragmentHeader(this.ins_id, fragment,
234+
fragment_index, object_size, fragment_size, this.opt.ct, 1);
235+
},
230236
}
231237

232238
module.exports = ECLib;

src/cpp/libmain.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,34 @@ NAN_METHOD(EclGetFragmentSize) {
117117
Nan::HandleScope scope;
118118
info.GetReturnValue().Set(Nan::New("C++ GetFragmentSize").ToLocalChecked());
119119
}
120+
121+
NAN_METHOD(EclAddFragmentHeader) {
122+
Nan::HandleScope scope;
123+
124+
if (info.Length() != 7) {
125+
Nan::ThrowTypeError("Wrong number of arguments EclAddFragmentHeader");
126+
return ;
127+
}
128+
129+
ec_checksum_type_t ct;
130+
ec_backend_t instance;
131+
132+
int desc = Nan::To<int>(info[0]).FromJust();
133+
char *frag = node::Buffer::Data(info[1]);
134+
int frag_idx = Nan::To<int>(info[2]).FromJust();
135+
int64_t obj_size = Nan::To<int64_t>(info[3]).FromJust();
136+
int frag_size = Nan::To<int>(info[4]).FromJust();
137+
int _ct = Nan::To<int>(info[5]).FromJust();
138+
int add_cs = Nan::To<int>(info[6]).FromJust();
139+
140+
ct = get_ec_checksum_type(_ct);
141+
142+
instance = liberasurecode_backend_instance_get_by_desc(desc);
143+
144+
init_fragment_header(frag);
145+
add_fragment_metadata(instance, frag, frag_idx, obj_size, frag_size, ct,
146+
add_cs);
147+
148+
info.GetReturnValue().Set(Nan::NewBuffer(frag,
149+
frag_size + header_size).ToLocalChecked());
150+
}

src/cpp/libmain.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,16 @@
2323
*/
2424

2525
#ifndef ECLIB_LIBMAIN_H
26-
# define ECLIB_LIBMAIN_H
26+
#define ECLIB_LIBMAIN_H
2727

2828
#include <nan.h>
2929
#include <liberasurecode/erasurecode.h>
30+
#include <liberasurecode/erasurecode_backend.h>
3031
#include <liberasurecode/erasurecode_helpers.h>
32+
extern "C" {
33+
#include <liberasurecode/erasurecode_helpers_ext.h>
34+
#include <liberasurecode/erasurecode_postprocessing.h>
35+
}
3136

3237
NAN_METHOD(EclCreate);
3338
NAN_METHOD(EclDestroy);
@@ -38,5 +43,6 @@ NAN_METHOD(EclVerifyStripeMetadata);
3843
NAN_METHOD(EclGetAlignedDataSize);
3944
NAN_METHOD(EclGetMinimumEncodeSize);
4045
NAN_METHOD(EclGetFragmentSize);
46+
NAN_METHOD(EclAddFragmentHeader);
4147

4248
#endif /* ECLIB_LIBMAIN_H */

src/cpp/node-eclib.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ NAN_MODULE_INIT(Init) {
4444
NAN_EXPORT(target, EclGetAlignedDataSize);
4545
NAN_EXPORT(target, EclGetMinimumEncodeSize);
4646
NAN_EXPORT(target, EclGetFragmentSize);
47+
NAN_EXPORT(target, EclAddFragmentHeader);
4748
}
4849

4950
NODE_MODULE(node_eclib, Init)

0 commit comments

Comments
 (0)