data_store.h 997 Bytes
#ifndef DATA_STORE_H
#define DATA_STORE_H

#include <string>
#include <sstream>
#include <iostream>
#include <fstream>

#include "../multithread/buffer_producer.h"
#include "data_basic.h"
#include "../constant.h"

namespace data{
	class Data_Store {
		protected:
			int size=0;
			bool write_on_add;
			std::string file_name;
			std::ofstream output;
			virtual void add_internal(data::Data_basic *data)=0;
		public:
			Data_Store():write_on_add(false){}
			Data_Store(std::string file_name):
				write_on_add(true),
				file_name(file_name)
			{
				this->output.open(this->file_name,std::ios::trunc);
			}

			virtual ~Data_Store(){
				this->output.close();
			}

			int getSize(){return this->size;}

			void add(data::Data_basic *data){
				this->add_internal(data);
				if(this->write_on_add){
					std::string tmp = data->to_csv();
					this->output << tmp << std::endl;
				}
			}
			virtual multithread::Buffer<data::Data_basic*>* get(std::string pattern)=0;
	};
}
#endif // DATA_STORE_H