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 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
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...