add clientdemo

pull/191/head
ruanshudong 2021-09-24 10:11:17 +08:00
parent 18c6c5fb3e
commit b8bfceeae4
3 changed files with 111 additions and 0 deletions

View File

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

View File

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

105
examples/ClientDemo/main.cpp Executable file
View File

@ -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;
}