13 if(configfile!=
"") m_variables.Initialise(configfile);
19 if(!m_variables.Get(
"verbose",m_verbose)) m_verbose=1;
22 if(!m_variables.Get(
"Threads",threadcount)) threadcount=4;
26 ManagerSend=
new zmq::socket_t(*m_data->context,ZMQ_PUSH);
27 ManagerSend->bind(
"inproc://MyToolZMQMultiThreadSend");
33 items[0].events=ZMQ_POLLOUT;
37 items[1].events=ZMQ_POLLIN;
40 for(
int i=0;i<threadcount;i++){
42 args.push_back(tmparg);
43 std::stringstream tmp;
58 zmq::poll(&
items[0], 2, 0);
60 if ((
items[1].revents & ZMQ_POLLIN)){
62 zmq::message_t message;
64 std::istringstream iss(static_cast<char*>(message.data()));
65 std::cout<<
"reply = "<<iss.str()<<std::endl;
70 if ((
items[0].revents & ZMQ_POLLOUT)){
75 std::string greeting=
"HI";
76 zmq::message_t message(greeting.length()+1);
77 snprintf ((
char *) message.data(), greeting.length()+1 ,
"%s" , greeting.c_str()) ;
80 std::cout<<
"sending Hi"<<std::endl;
113 zmq::socket_t ThreadReceive(*args->
context,ZMQ_PULL);
114 ThreadReceive.connect(
"inproc://MyToolZMQMultiThreadSend");
115 zmq::socket_t ThreadSend(*args->
context,ZMQ_PUSH);
116 ThreadSend.connect(
"inproc://MyToolZMQMultiThreadReceive");
118 zmq::pollitem_t initems[1] = {{ThreadReceive,0,ZMQ_POLLIN,0}};
119 zmq::pollitem_t outitems[1] = {{ThreadSend,0,ZMQ_POLLOUT,0}};
121 zmq::poll(&initems[0], 1, 100);
123 if ((initems[0].revents & ZMQ_POLLIN)){
125 zmq::message_t message;
126 ThreadReceive.recv(&message);
127 std::istringstream iss(static_cast<char*>(message.data()));
131 zmq::poll(&outitems[0], 1, 10000);
132 if ((outitems[0].revents & ZMQ_POLLOUT)){
134 std::string greeting=
"hello";
135 zmq::message_t message(greeting.length()+1);
136 snprintf ((
char *) message.data(), greeting.length()+1 ,
"%s" , greeting.c_str()) ;
137 ThreadSend.send(message);
Logging * Log
Log class pointer for use in Tools, it can be used to send messages which can have multiple error lev...
Thread_args * CreateThread(std::string ThreadName, void(*func)(std::string))
zmq::context_t * context
ZMQ context used for ZMQ socket creation.
bool KillThread(Thread_args *&args)
Kill a thread assosiated to args.