RpcSession.cc 911 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <boost/bind.hpp>
  2. #include <glog/logging.h>
  3. #include "Rpc/RpcSession.h"
  4. #include "Rpc/RpcServer.h"
  5. namespace Egametang {
  6. RpcSession::RpcSession(boost::asio::io_service& io_service, RpcServer& server):
  7. RpcCommunicator(io_service), rpc_server(server)
  8. {
  9. }
  10. RpcSession::~RpcSession()
  11. {
  12. socket.close();
  13. }
  14. void RpcSession::OnRecvMessage(RpcMetaPtr meta, StringPtr message)
  15. {
  16. RpcSessionPtr session = shared_from_this();
  17. rpc_server.RunService(session, meta, message,
  18. boost::bind(&RpcSession::SendMeta, session, _1, _2));
  19. // 可以循环利用
  20. RecvMeta(meta, message);
  21. }
  22. void RpcSession::OnSendMessage(RpcMetaPtr meta, StringPtr message)
  23. {
  24. }
  25. void RpcSession::Start()
  26. {
  27. RpcMetaPtr meta(new RpcMeta());
  28. StringPtr message(new std::string);
  29. RecvMeta(meta, message);
  30. }
  31. void RpcSession::Stop()
  32. {
  33. RpcSessionPtr session = shared_from_this();
  34. rpc_server.Remove(session);
  35. }
  36. } // namespace Egametang