RpcServer.h 811 B

1234567891011121314151617181920212223242526272829303132
  1. #ifndef NET_RPC_SERVER_H
  2. #define NET_RPC_SERVER_H
  3. #include "base/base.h"
  4. namespace Hainan {
  5. class RpcServer: public boost::enable_shared_from_this<RpcServer>
  6. {
  7. private:
  8. typedef boost::unordered_set<RpcSessionPtr> RpcSessionSet;
  9. google::protobuf::Service& service;
  10. boost::asio::io_service io_service;
  11. boost::asio::ip::tcp::acceptor acceptor;
  12. ThreadPool thread_pool;
  13. RpcSessionSet sessions;
  14. void RpcServer::Callback(RpcSessionPtr session,
  15. boost::function<void (RpcSessionPtr, RpcResponsePtr)> handler);
  16. public:
  17. RpcServer(google::protobuf::Service& pservice, int port);
  18. ~RpcServer();
  19. void Start();
  20. void Stop();
  21. void RunService(RpcSessionPtr session, RpcRequestPtr request,
  22. boost::function<void (RpcSessionPtr, RpcResponsePtr)> handler);
  23. };
  24. } // namespace Hainan
  25. #endif // NET_RPC_SERVER_H