17#ifndef __ROGUE_ZMQ_SERVER_H__
18#define __ROGUE_ZMQ_SERVER_H__
29 #include <boost/python.hpp>
49 void* zmqCtx_ =
nullptr;
50 void* zmqPub_ =
nullptr;
51 void* zmqRep_ =
nullptr;
52 void* zmqStr_ =
nullptr;
56 std::thread* rThread_ =
nullptr;
57 std::thread* sThread_ =
nullptr;
58 std::atomic<bool> threadEn_{
false};
67 std::shared_ptr<rogue::Logging> log_;
89 static std::shared_ptr<rogue::interfaces::ZmqServer>
create(
const std::string& addr, uint16_t
port);
114 void publish(boost::python::object data);
121 virtual boost::python::object
doRequest(boost::python::object data);
129 virtual std::string
doString(
const std::string& data);
168 boost::python::object
doRequest(boost::python::object data);
178 boost::python::object
defDoRequest(boost::python::object data);
189 std::string
doString(
const std::string& data);
Python-overridable wrapper for ZmqServer.
boost::python::object defDoRequest(boost::python::object data)
Calls base-class doRequest() implementation.
std::string defDoString(const std::string &data)
Calls base-class doString() implementation.
boost::python::object doRequest(boost::python::object data)
Processes a Python-object request message.
std::string doString(const std::string &data)
Processes a string request message.
ZeroMQ server for Rogue control, request/reply, and publish updates.
static void setup_python()
Registers Python bindings for this class.
uint16_t port()
Returns currently bound base port.
void start()
Starts server, binds sockets, and launches worker threads.
virtual ~ZmqServer()
Destroys server and stops worker threads/sockets.
void stop()
Stops server threads and closes sockets.
static std::shared_ptr< rogue::interfaces::ZmqServer > create(const std::string &addr, uint16_t port)
Creates a ZeroMQ server.
virtual boost::python::object doRequest(boost::python::object data)
Handles one binary request payload.
virtual std::string doString(const std::string &data)
Handles one string request payload.
void publish(boost::python::object data)
Publishes an update payload on the publish socket.
std::shared_ptr< rogue::interfaces::ZmqServerWrap > ZmqServerWrapPtr
std::shared_ptr< rogue::interfaces::ZmqServer > ZmqServerPtr