mirror of https://github.com/TarsCloud/TarsCpp
add clientdemo
parent
18c6c5fb3e
commit
b8bfceeae4
|
@ -1,5 +1,6 @@
|
|||
|
||||
add_subdirectory(UtilDemo)
|
||||
add_subdirectory(ClientDemo)
|
||||
add_subdirectory(CoroutineDemo)
|
||||
add_subdirectory(HttpDemo)
|
||||
if(TARS_PROTOBUF)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
build_tars_server("ClientDemo" "")
|
||||
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue