From bb9a7e348892eb5c4fccb063380aa6fcd9612b71 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期二, 06 四月 2021 17:32:35 +0800
Subject: [PATCH] server resend failed; rename msgs; refactor.

---
 utest/utest.cpp |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/utest/utest.cpp b/utest/utest.cpp
index 55a08a3..8f2a7f5 100644
--- a/utest/utest.cpp
+++ b/utest/utest.cpp
@@ -1,9 +1,10 @@
 #include "defs.h"
 #include "pubsub.h"
 #include "pubsub_center.h"
-#include "reqrep.h"
 #include "reqrep_center.h"
 #include "socket.h"
+#include "topic_reply.h"
+#include "topic_request.h"
 #include "util.h"
 #include <atomic>
 #include <boost/uuid/uuid_generators.hpp>
@@ -189,24 +190,26 @@
 				printf("count: %d\n", count.load());
 			}
 		};
-		client.StartWorker(onRecv, 1);
+		client.StartWorker(onRecv, 2);
 		boost::timer::auto_cpu_timer timer;
 		for (int i = 0; i < nreq; ++i) {
 			if (!client.AsyncRequest(topic, "data " + std::to_string(i), 1000)) {
 				printf("client request failed\n");
 			}
+
 			// if (!client.SyncRequest(topic, "data " + std::to_string(i), reply, 1000)) {
 			// 	printf("client request failed\n");
 			// } else {
 			// 	++count;
 			// }
 		}
-		printf("request %s %d done ", topic.c_str(), nreq);
-		while (count.load() < nreq) {
+		do {
 			std::this_thread::yield();
-		}
+		} while (count.load() < nreq);
 		client.Stop();
+		printf("request %s %d done ", topic.c_str(), count.load());
 	};
+	std::atomic_uint64_t server_msg_count(0);
 	auto Server = [&](const std::string &name, const std::vector<std::string> &topics) {
 		SocketReply server(shm);
 		ProcInfo info;
@@ -215,7 +218,8 @@
 		if (!server.Register(info, topics, 100)) {
 			printf("register failed\n");
 		}
-		auto onData = [](const std::string &topic, const std::string &data, std::string &reply) {
+		auto onData = [&](const std::string &topic, const std::string &data, std::string &reply) {
+			++server_msg_count;
 			reply = topic + ':' + data;
 			return true;
 		};
@@ -229,9 +233,10 @@
 	servers.Launch(Server, "server", topics);
 	std::this_thread::sleep_for(100ms);
 	for (auto &t : topics) {
-		clients.Launch(Client, t, 1000 * 1000);
+		clients.Launch(Client, t, 1000 * 100);
 	}
 	clients.WaitAll();
+	printf("clients done, server replyed: %d\n", server_msg_count.load());
 	run = false;
 	servers.WaitAll();
 }

--
Gitblit v1.8.0