123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include "TranImp.h"
- #include "HelloServer.h"
- using namespace tars;
- TranImp::TranImp()
- {
- }
- ///////////////////////////////////////////////////////////////////////////////
- void TranImp::initialize()
- {
- Application::getCommunicator()->stringToProxy(g_TransDstServerObj, _servantPrx);
- ProxyProtocol proto;
- proto.requestFunc = ProxyProtocol::streamRequest;
- proto.responseFunc = ProxyProtocol::tupResponse;
- _servantPrx->tars_set_protocol(proto);
- }
- void TranImp::async_call(tars::CurrentPtr current, vector<char> &response)
- {
- const vector<char> &request = current->getRequestBuffer();
- TarsInputStream<> is;
- is.setBuffer(request.data(), request.size());
- RequestPacket req;
- req.readFrom(is);
- ResponsePacket rsp;
- TLOGDEBUG("async_call: begin remote call, req len:" << req.sBuffer.size() << endl);
- /*a-sync-call*/
- ServantProxyCallbackPtr cb = new ServantCallback("ServantCallback", this, current);
- _servantPrx->rpc_call_async(req.iRequestId, req.sFuncName, request.data(), request.size(), cb);
- current->setResponse(false);
- }
- std::atomic<int> wup_trans_count(0);
- int TranImp::doRequest(tars::CurrentPtr current, vector<char> &response) {
- ++wup_trans_count;
- async_call(current, response);
- return 0;
- }
- int TranImp::doResponse(ReqMessagePtr resp) {
- ServantCallback *cb = dynamic_cast<ServantCallback *>(resp->callback.get());
- if (cb) {
- vector<char> &buff = resp->response->sBuffer;
- if (!buff.empty()) {
- TLOGDEBUG("end remote call, req len:" << buff.size() << endl);
- cb->getCurrent()->sendResponse(buff.data(), buff.size());
- }
- }
- return 0;
- }
- void TranImp::destroy() {
- }
- ///////////////////////////////////////////////////////////////////////////////
|