13#ifndef ROOT_ROOFIT_MultiProcess_Messenger
14#define ROOT_ROOFIT_MultiProcess_Messenger
20#define turn_NDEBUG_back_on
24namespace MultiProcess {
28template <
typename T,
typename... Ts>
33 ss <<
"PID " << getpid() <<
" sends W2Q " << item;
42template <
typename value_t>
50 ss <<
"PID " << getpid() <<
" receives W(" << this_worker_id <<
")2Q " << value;
57template <
typename T,
typename... Ts>
62 ss <<
"PID " << getpid() <<
" sends Q2W(" << this_worker_id <<
") " << item;
71template <
typename value_t>
79 ss <<
"PID " << getpid() <<
" receives Q2W " << value;
88template <
typename T,
typename... Ts>
93 ss <<
"PID " << getpid() <<
" sends Q2M " << item;
102template <
typename value_t>
109 std::stringstream ss;
110 ss <<
"PID " << getpid() <<
" receives Q2M " << value;
117template <
typename T,
typename... Ts>
121 std::stringstream ss;
122 ss <<
"PID " << getpid() <<
" sends M2Q " << item;
131template <
typename value_t>
138 std::stringstream ss;
139 ss <<
"PID " << getpid() <<
" receives M2Q " << value;
153 std::stringstream ss;
154 ss <<
"PID " << getpid() <<
" sends M2W " << item;
162template <
typename T,
typename T2,
typename... Ts>
166 std::stringstream ss;
167 ss <<
"PID " << getpid() <<
" sends M2W " << item;
175template <
typename value_t>
182 std::stringstream ss;
183 ss <<
"PID " << getpid() <<
" receives M2W " << value;
190template <
typename T,
typename... Ts>
194 std::stringstream ss;
195 ss <<
"PID " << getpid() <<
" sends M2W " << item;
204template <
typename value_t>
211 std::stringstream ss;
212 ss <<
"PID " << getpid() <<
" receives M2W " << value;
222#ifdef turn_NDEBUG_back_on
224#undef turn_NDEBUG_back_on
ZeroMQSvc & zmqSvc()
Get singleton object of this class.
value_t receive_from_master_on_worker(bool *more=nullptr)
value_t receive_from_worker_on_master()
std::vector< ZmqLingeringSocketPtr<> > qw_push_
value_t receive_from_queue_on_worker()
ZmqLingeringSocketPtr wm_push_
std::vector< ZeroMQPoller > qw_pull_poller_
zmq::send_flags send_flag_
void send_from_queue_to_master()
std::vector< ZmqLingeringSocketPtr<> > qw_pull_
ZmqLingeringSocketPtr mw_pub_
ZmqLingeringSocketPtr mq_pull_
void send_from_worker_to_master()
ZmqLingeringSocketPtr wm_pull_
void send_from_master_to_queue()
ZeroMQPoller mw_sub_poller_
ZmqLingeringSocketPtr this_worker_qw_push_
value_t receive_from_master_on_queue()
value_t receive_from_queue_on_master()
void debug_print(std::string s)
Function called from send and receive template functions in debug builds used to monitor the messages...
value_t receive_from_worker_on_queue(std::size_t this_worker_id)
void publish_from_master_to_workers(T &&item)
specialization that sends the final message
ZeroMQPoller mq_pull_poller_
ZmqLingeringSocketPtr mw_sub_
void send_from_queue_to_worker(std::size_t this_worker_id)
ZmqLingeringSocketPtr this_worker_qw_pull_
ZmqLingeringSocketPtr mq_push_
void send_from_worker_to_queue()
ZeroMQPoller wm_pull_poller_
std::vector< std::pair< size_t, zmq::event_flags > > ppoll(int timeo, const sigset_t *sigmask)
Poll the sockets with ppoll.
zmq::send_result_t send(zmq::socket_t &socket, const T &item, zmq::send_flags flags=zmq::send_flags::none) const
Send message with ZMQ.
T receive(zmq::socket_t &socket, zmq::recv_flags flags=zmq::recv_flags::none, bool *more=nullptr) const
receive message with ZMQ, general version
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...