Browse Source

add clientdemo

ruanshudong 2 năm trước cách đây
mục cha
commit
b8bfceeae4
3 tập tin đã thay đổi với 111 bổ sung0 xóa
  1. 1 0
      examples/CMakeLists.txt
  2. 5 0
      examples/ClientDemo/CMakeLists.txt
  3. 105 0
      examples/ClientDemo/main.cpp

+ 1 - 0
examples/CMakeLists.txt

@@ -1,5 +1,6 @@
 
 add_subdirectory(UtilDemo)
+add_subdirectory(ClientDemo)
 add_subdirectory(CoroutineDemo)
 add_subdirectory(HttpDemo)
 if(TARS_PROTOBUF)

+ 5 - 0
examples/ClientDemo/CMakeLists.txt

@@ -0,0 +1,5 @@
+
+build_tars_server("ClientDemo" "")
+
+
+

+ 105 - 0
examples/ClientDemo/main.cpp

@@ -0,0 +1,105 @@
+#include <iostream>
+#include "servant/Application.h"
+#include "util/tc_option.h"
+
+using namespace tars;
+
+Communicator *_comm;
+string matchObj = "TestApp.HelloServer.HelloObj@tcp -h 127.0.0.1 -p 8999";
+
+struct Param
+{
+	int count;
+	int thread;
+
+	ServantPrx pPrx;
+};
+
+Param param;
+std::atomic<int> callback(0);
+
+void ping(int c)
+{
+	for(int i = 0 ; i < c; i++)
+	{
+		param.pPrx->tars_ping();
+		++callback;
+	}
+}
+
+int main(int argc, char *argv[])
+{
+	try
+	{
+		if (argc < 2)
+		{
+			cout << "Usage:" << argv[0] << " --count=1000 --thread=1" << endl;
+
+			return 0;
+		}
+
+		TC_Option option;
+		option.decode(argc, argv);
+
+		param.count = TC_Common::strto<int>(option.getValue("count"));
+		if(param.count <= 0) param.count = 1000;
+		param.thread = TC_Common::strto<int>(option.getValue("thread"));
+		if(param.thread <= 0) param.thread = 1;
+
+		_comm = new Communicator();
+
+//        LocalRollLogger::getInstance()->logger()->setLogLevel(6);
+
+		_comm->setProperty("sendqueuelimit", "1000000");
+		_comm->setProperty("asyncqueuecap", "1000000");
+
+		param.pPrx = _comm->stringToProxy<ServantPrx>(matchObj);
+
+		param.pPrx->tars_connect_timeout(50000);
+		param.pPrx->tars_set_timeout(60 * 1000);
+		param.pPrx->tars_async_timeout(60*1000);
+
+		int64_t start = TC_Common::now2us();
+
+		std::function<void(int)> func;
+
+		func = ping;
+
+		vector<std::thread*> vt;
+		for(int i = 0 ; i< param.thread; i++)
+		{
+			vt.push_back(new std::thread(func, param.count));
+		}
+
+		std::thread print([&]{while(callback != param.count * param.thread) {
+			cout << "Call:" << " : ----------finish count:" << callback << endl;
+			std::this_thread::sleep_for(std::chrono::seconds(1));
+		};});
+
+		for(size_t i = 0 ; i< vt.size(); i++)
+		{
+			vt[i]->join();
+			delete vt[i];
+		}
+
+		cout << "(pid:" << std::this_thread::get_id() << ")"
+		     << "(count:" << param.count << ")"
+		     << "(use ms:" << (TC_Common::now2us() - start)/1000 << ")"
+		     << endl;
+
+
+		while(callback != param.count * param.thread) {
+			std::this_thread::sleep_for(std::chrono::seconds(1));
+		}
+
+		print.join();
+		cout << " ----------finish count:" << callback << endl;
+	}
+	catch(exception &ex)
+	{
+		cout << ex.what() << endl;
+	}
+	cout << "main return." << endl;
+
+	return 0;
+}