synapse-app-sdk
C++ SDK for Synapse Apps
Loading...
Searching...
No Matches
data_reader.hpp
1#pragma once
2#include <atomic>
3#include <optional>
4#include <thread>
5
6#include <spdlog/spdlog.h>
7#include <zmq.hpp>
8
9namespace synapse {
10
17 public:
22 explicit ZMQDataReader(zmq::context_t& context);
23
28
34 bool connect(const std::string& publisher_endpoint);
35
40 std::optional<zmq::message_t> receive_message();
41
46 std::vector<zmq::message_t> receive_multipart();
47
48 private:
50 zmq::context_t& zmq_context_;
51
53 std::atomic<bool> connected_{false};
54
56 zmq::socket_t subscriber_socket_;
57
59 std::string publisher_endpoint_;
60
64 void subscriber_close();
65
69 void stop();
70};
71} // namespace synapse
std::optional< zmq::message_t > receive_message()
Receives a single message from the connected publisher.
Definition data_reader.cpp:39
ZMQDataReader(zmq::context_t &context)
Constructor for ZMQDataReader.
Definition data_reader.cpp:4
~ZMQDataReader()
Destructor - ensures socket is closed and resources are cleaned up.
Definition data_reader.cpp:8
std::vector< zmq::message_t > receive_multipart()
Receives a multipart message from the connected publisher.
Definition data_reader.cpp:65
bool connect(const std::string &publisher_endpoint)
Connects to a ZMQ publisher endpoint.
Definition data_reader.cpp:10