9 namespace helios {
namespace analytics {
20 class HDA_RecordBuffer {
48 std::function<void(
void)> write;
60 std::string
const &outpath,
61 size_t const maxSize=256,
62 std::string
const &sep=
","
66 ofs(outpath, std::ios_base::out),
69 write = [&](void) ->
void {this->firstWrite();};
72 virtual ~HDA_RecordBuffer(){
83 inline bool isOpen() {
return ofs.is_open();}
88 inline void firstWrite() {
89 size_t numElems = buff.size();
91 for(
size_t i = 1 ; i < numElems ; ++i){
92 ofs << sep << buff[i];
94 this->write = [&] (void) ->
void {this->nextWrite();};
100 inline void nextWrite() {
101 for(T
const & elem : buff) ofs << sep << elem;
118 if(isOpen()) ofs.close();
126 inline void push(T
const & elem){
127 if(buff.size() >= maxSize) flush();
128 buff.push_back(elem);