Files
sf_daq_buffer/sf-stream/include/LiveRecvModule.hpp
T
2020-06-04 09:58:46 +02:00

40 lines
987 B
C++

#ifndef SF_DAQ_BUFFER_LIVERECVMODULE_HPP
#define SF_DAQ_BUFFER_LIVERECVMODULE_HPP
#include <vector>
#include <thread>
#include "FastQueue.hpp"
#include "jungfrau.hpp"
#include "formats.hpp"
class LiveRecvModule {
FastQueue<ModuleFrameBuffer>& queue_;
const size_t n_modules_;
void* ctx_;
const std::string ipc_prefix_;
std::atomic_bool is_receiving_;
std::thread receiving_thread_;
void* connect_socket(size_t module_id);
void receive_thread();
void recv_single_module(void* socket, ModuleFrame* metadata, char* data);
uint64_t align_modules(const std::vector<void*>& sockets,
ModuleFrameBuffer *metadata,
char *data);
void stop();
public:
LiveRecvModule(
FastQueue<ModuleFrameBuffer>& queue,
const size_t n_modules,
void* ctx,
const std::string& ipc_prefix);
~LiveRecvModule();
};
#endif //SF_DAQ_BUFFER_LIVERECVMODULE_HPP