Add stop_writing method to H5WriteModule

This commit is contained in:
2020-04-06 13:24:15 +02:00
parent 4fff563dad
commit 90e70049bd
2 changed files with 64 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
#ifndef H5WRITERMODULE_H
#define H5WRITERMODULE_H
#include <thread>
#include "RingBuffer.hpp"
#include "ZmqReceiver.hpp"
#include "H5Format.hpp"
class H5WriteModule {
typedef std::unordered_map<std::string, HeaderDataType> header_map;
RingBuffer& ring_buffer_;
const header_map& header_values_;
const H5Format& format_;
std::atomic_bool is_writing_;
std::thread writing_thread_;
protected:
void write_thread();
public:
H5WriteModule(
RingBuffer& ring_buffer,
const header_map& header_values,
const H5Format& format);
void start_writing();
void stop_writing();
};
#endif //H5WRITERMODULE_H
+32
View File
@@ -0,0 +1,32 @@
#include "H5WriteModule.hpp"
#include <iostream>
using namespace std;
H5WriteModule::H5WriteModule(
RingBuffer& ring_buffer,
const header_map& header_values,
const H5Format& format) :
ring_buffer_(ring_buffer),
header_values_(header_values),
format_(format),
is_writing_(false)
{
}
void H5WriteModule::stop_writing()
{
#ifdef DEBUG_OUTPUT
using namespace date;
using namespace chrono;
cout << "[" << system_clock::now() << "]";
cout << "[H5WriteModule::stop_writing]";
cout << " Disable writing." << endl;
#endif
is_writing_ = false;
if (writing_thread_.joinable()) {
writing_thread_.join();
}
}