#include "stream_coder.h"
StreamCoder::StreamCoder() {
}
StreamCoder::~StreamCoder() {
size_t n_chunks = pending_output.size();
for (size_t i = 0; i < n_chunks; i++) {
alloc.Free(pending_output[i]);
}
alloc.ReportMemoryToV8();
}
Local<Array> StreamCoder::PendingChunksAsArray() {
size_t n_chunks = pending_output.size();
Local<Array> chunks = Nan::New<Array>(n_chunks);
for (size_t i = 0; i < n_chunks; i++) {
uint8_t* current = pending_output[i];
Allocator::AllocatedBuffer* buf_info = Allocator::GetBufferInfo(current);
Nan::Set(chunks, i, Nan::NewBuffer(reinterpret_cast<char*>(current),
buf_info->size,
Allocator::NodeFree,
NULL).ToLocalChecked());
}
pending_output.clear();
return chunks;
}