mirror of
https://gitee.com/TarsCloud/TarsCpp.git
synced 2025-01-05 17:42:24 +08:00
157 lines
3.4 KiB
C++
Executable File
157 lines
3.4 KiB
C++
Executable File
#include "HelloImp.h"
|
|
#include "HelloServer.h"
|
|
#include "servant/RemoteLogger.h"
|
|
|
|
using namespace tars;
|
|
|
|
std::atomic<int> hello_count(0);
|
|
std::atomic<int> trans_count(0);
|
|
|
|
HelloImp::HelloImp()
|
|
{
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
void HelloImp::initialize()
|
|
{
|
|
Application::getCommunicator()->stringToProxy(g_HelloServerObj, _helloPrx);
|
|
|
|
_helloPrx->tars_async_timeout(100*1000);
|
|
}
|
|
|
|
void HelloImp::destroy()
|
|
{
|
|
++g_handleDestroy;
|
|
}
|
|
|
|
struct HelloCallback : public HelloPrxCallback
|
|
{
|
|
HelloCallback(tars::CurrentPtr ¤t, int index, const string &s) : _current(current), _index(index), _s(s)
|
|
{
|
|
}
|
|
|
|
//回调函数
|
|
virtual void callback_testHello(int ret, const string &r)
|
|
{
|
|
// LOG_CONSOLE_DEBUG << ret << endl;
|
|
|
|
assert(ret == 0);
|
|
|
|
Hello::async_response_testTrans(_current, ret, r);
|
|
}
|
|
|
|
virtual void callback_testHello_exception(tars::Int32 ret)
|
|
{
|
|
cout << "callback exception:" << ret << endl;
|
|
}
|
|
|
|
tars::CurrentPtr _current;
|
|
int _index;
|
|
string _s;
|
|
};
|
|
|
|
int HelloImp::testTrans(int index, const string &s, string &r, CurrentPtr current)
|
|
{
|
|
// LOG_CONSOLE_DEBUG << index << endl;
|
|
|
|
++trans_count;
|
|
|
|
try
|
|
{
|
|
current->setResponse(false);
|
|
|
|
HelloPrxCallbackPtr p = new HelloCallback(current, index, s);
|
|
|
|
_helloPrx->async_testHello(p, index, s);
|
|
}
|
|
catch (exception &e)
|
|
{
|
|
cout << "exception:" << e.what() << endl;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
int HelloImp::testSyncTrans(int index, const string &s, string &r, CurrentPtr current)
|
|
{
|
|
try
|
|
{
|
|
int ret = _helloPrx->testHello(index, s, r);
|
|
|
|
return ret;
|
|
}
|
|
catch (exception &e)
|
|
{
|
|
cout << "exception:" << e.what() << endl;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
int HelloImp::testHello(int index, const string& s, string& r, CurrentPtr current)
|
|
{
|
|
//
|
|
// if(index % 10000 == 0)
|
|
// {
|
|
// LOG_CONSOLE_DEBUG << index << endl;
|
|
// }
|
|
++hello_count;
|
|
|
|
r = s;
|
|
return 0;
|
|
}
|
|
|
|
int HelloImp::testPid(string &r, CurrentPtr current)
|
|
{
|
|
r = TC_Common::tostr(this->getApplication());
|
|
return 0;
|
|
}
|
|
|
|
int HelloImp::testTimeout(int timeout, CurrentPtr current)
|
|
{
|
|
TC_Common::sleep(timeout);
|
|
return 0;
|
|
}
|
|
|
|
int HelloImp::testDyeing(const std::string & strIn,std::string &strOut, CurrentPtr current)
|
|
{
|
|
LOG_CONSOLE_DEBUG << strIn << endl;
|
|
|
|
strOut="this is a dyeing message";
|
|
|
|
TLOG_DEBUG(strOut << "1, debug log" << endl);
|
|
FDLOG("test") << strOut << "1, day log" << endl;
|
|
|
|
TLOG_DEBUG(strOut << "2, debug log" << endl);
|
|
FDLOG("test") << strOut << "2, day log" << endl;
|
|
|
|
return _helloPrx->testDyeingTrans();
|
|
}
|
|
|
|
tars::Int32 HelloImp::testDyeingTrans(CurrentPtr current)
|
|
{
|
|
string strOut = "this is a dyeing trans message";
|
|
|
|
TLOG_DEBUG(strOut << "1, debug log" << endl);
|
|
FDLOG("test") << strOut << "1, day log" << endl;
|
|
|
|
TLOG_DEBUG(strOut << "2, debug log" << endl);
|
|
FDLOG("test") << strOut << "2, day log" << endl;
|
|
|
|
return 0;
|
|
}
|
|
|
|
bool HelloImp::testCoro(const std::string& sIn, std::string &sOut, CurrentPtr current)
|
|
{
|
|
return ServantProxyThreadData::getData()->_sched != NULL;
|
|
}
|
|
|
|
int HelloImp::testConHash(std::string &sOut, CurrentPtr current)
|
|
{
|
|
sOut = _handle->getBindAdapter()->getEndpoint().toString();
|
|
return 0;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|