13#ifndef ROOT_ROOFIT_MultiProcess_Messenger_decl
14#define ROOT_ROOFIT_MultiProcess_Messenger_decl
26namespace MultiProcess {
60 template <
typename T,
typename... Ts>
62 template <
typename value_t>
65 template <
typename T,
typename... Ts>
67 template <
typename value_t>
74 template <
typename T,
typename... Ts>
76 template <
typename value_t>
80 template <
typename T,
typename... Ts>
82 template <
typename value_t>
89 template <
typename T,
typename T2,
typename... Ts>
91 template <
typename value_t>
95 template <
typename T,
typename... Ts>
97 template <
typename value_t>
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
std::unique_ptr< zmq::socket_t, ZmqLingeringSocketPtrDeleter< PERIOD > > ZmqLingeringSocketPtr
Manages ZeroMQ sockets and wraps send and receive calls.
void test_receive(X2X expected_ping_value, test_rcv_pipes rcv_pipe, std::size_t worker_id)
bool close_QW_container_on_destruct_
void test_connections(const ProcessManager &process_manager)
Test whether push-pull sockets are working.
value_t receive_from_master_on_worker(bool *more=nullptr)
value_t receive_from_worker_on_master()
std::vector< ZmqLingeringSocketPtr<> > qw_push_
std::vector< std::string > bound_ipc_addresses_
void set_send_flag(zmq::send_flags flag)
Set the flag used in all send functions; 0, ZMQ_DONTWAIT, ZMQ_SNDMORE or bitwise combination.
ZeroMQPoller mq_push_poller_
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_
void bindAddr(T &socket, std::string &&addr)
ZmqLingeringSocketPtr mq_pull_
bool close_this_QW_on_destruct_
void send_from_worker_to_master()
ZmqLingeringSocketPtr wm_pull_
std::vector< ZeroMQPoller > qw_push_poller_
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_
bool close_MQ_on_destruct_
ZmqLingeringSocketPtr mw_sub_
void send_from_queue_to_worker(std::size_t this_worker_id)
ZmqLingeringSocketPtr this_worker_qw_pull_
ZmqLingeringSocketPtr mq_push_
void test_send(X2X ping_value, test_snd_pipes snd_pipe, std::size_t worker_id)
std::pair< ZeroMQPoller, std::size_t > create_worker_poller()
Helper function that creates a poller for worker_loop()
std::pair< ZeroMQPoller, std::size_t > create_queue_poller()
Helper function that creates a poller for Queue::loop()
void send_from_worker_to_queue()
ZeroMQPoller wm_pull_poller_
Fork processes for queue and workers.
Wrapper class for polling ZeroMQ sockets.
void set_socket_immediate(ZmqLingeringSocketPtr<> &socket)
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...