| | |
| | | std::condition_variable cv; |
| | | |
| | | std::atomic<uint64_t> n(0); |
| | | auto OnTopicData = [&](const std::string &proc_id, const std::string &topic, const std::string &data) { |
| | | auto OnTopicData = [&](const std::string &proc_id, const MsgPublish &pub) { |
| | | ++total_count; |
| | | |
| | | auto cur = Now(); |
| | |
| | | |
| | | for (unsigned i = 0; i < nmsg; ++i) { |
| | | std::string data = topic + std::to_string(i) + std::string(1000, '-'); |
| | | |
| | | bool r = provider.Publish(topic, data.data(), data.size(), timeout); |
| | | MsgPublish pub; |
| | | pub.set_topic(topic); |
| | | pub.set_data(data); |
| | | bool r = provider.Publish(pub, timeout); |
| | | if (!r) { |
| | | static std::atomic<int> an(0); |
| | | int n = ++an; |
| | |
| | | |
| | | std::atomic<int> count(0); |
| | | std::string reply; |
| | | auto onRecv = [&](const std::string &rep) { |
| | | reply = rep; |
| | | auto onRecv = [&](const std::string &proc_id, const MsgRequestTopicReply &msg) { |
| | | reply = msg.data(); |
| | | if (++count >= nreq) { |
| | | printf("count: %d\n", count.load()); |
| | | } |
| | |
| | | client.ClientStartWorker(onRecv, 2); |
| | | boost::timer::auto_cpu_timer timer; |
| | | for (int i = 0; i < nreq; ++i) { |
| | | if (!client.ClientAsyncRequest(topic, "data " + std::to_string(i), 1000)) { |
| | | MsgRequestTopic req; |
| | | req.set_topic(topic); |
| | | req.set_data("data " + std::to_string(i)); |
| | | if (!client.ClientAsyncRequest(req, 1000)) { |
| | | printf("client request failed\n"); |
| | | ++count; |
| | | } |
| | |
| | | auto Server = [&](const std::string &name, const std::vector<std::string> &topics) { |
| | | DemoNode server(name, shm); |
| | | |
| | | auto onData = [&](const std::string &topic, const std::string &data, std::string &reply) { |
| | | auto onData = [&](const std::string &proc_id, const MsgRequestTopic &request, MsgRequestTopicReply &reply) { |
| | | ++server_msg_count; |
| | | reply = topic + ':' + data; |
| | | reply.set_data(request.topic() + ':' + request.data()); |
| | | return true; |
| | | }; |
| | | server.ServerStart(onData); |