TestPushServantImp.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "TestPushServantImp.h"
  2. #include "servant/Application.h"
  3. #include "TestPushThread.h"
  4. using namespace std;
  5. //////////////////////////////////////////////////////
  6. void TestPushServantImp::initialize()
  7. {
  8. //initialize servant here:
  9. //...
  10. }
  11. //////////////////////////////////////////////////////
  12. void TestPushServantImp::destroy()
  13. {
  14. //destroy servant here:
  15. //...
  16. }
  17. int TestPushServantImp::doRequest(tars::TarsCurrentPtr current, vector<char>& response)
  18. {
  19. //保存客户端的信息,以便对客户端进行push消息
  20. (PushUser::mapMutex).lock();
  21. map<string, TarsCurrentPtr>::iterator it = PushUser::pushUser.find(current->getIp());
  22. if(it == PushUser::pushUser.end())
  23. {
  24. PushUser::pushUser.insert(map<string, TarsCurrentPtr>::value_type(current->getIp(), current));
  25. LOG->debug() << "connect ip: " << current->getIp() << endl;
  26. }
  27. (PushUser::mapMutex).unlock();
  28. //返回给客户端它自己请求的数据包,即原包返回(4字节长度+4字节requestid+buffer)
  29. const vector<char>& request = current->getRequestBuffer();
  30. response = request;
  31. return 0;
  32. }
  33. //客户端关闭到服务端的连接,或者服务端发现客户端长时间未发送包过来,然后超过60s就关闭连接
  34. //调用的方法
  35. int TestPushServantImp::doClose(TarsCurrentPtr current)
  36. {
  37. (PushUser::mapMutex).lock();
  38. map<string, TarsCurrentPtr>::iterator it = PushUser::pushUser.find(current->getIp());
  39. if(it != PushUser::pushUser.end())
  40. {
  41. PushUser::pushUser.erase(it);
  42. LOG->debug() << "close ip: " << current->getIp() << endl;
  43. }
  44. (PushUser::mapMutex).unlock();
  45. return 0;
  46. }