HttpServerImpl.h 812 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef HTTP_HTTPSERVERIMPL_H
  2. #define HTTP_HTTPSERVERIMPL_H
  3. #include "HttpConnection.h"
  4. #include "HttpRequestHandler.h"
  5. #include <asio.hpp>
  6. #include <functional>
  7. #include <memory>
  8. #include <thread>
  9. #include <vector>
  10. namespace Http {
  11. class HttpServerImpl
  12. {
  13. public:
  14. HttpServerImpl(unsigned short port, HttpServer::CallbackMethod callback);
  15. ~HttpServerImpl();
  16. void Wait();
  17. private:
  18. void StartAccept();
  19. void HandleAccept(const asio::error_code& ec);
  20. void HandleStop();
  21. private:
  22. std::size_t m_threadPoolSize;
  23. std::vector<std::shared_ptr<std::thread> > m_threads;
  24. asio::io_service m_ioService;
  25. asio::signal_set m_signals;
  26. asio::ip::tcp::acceptor m_acceptor;
  27. std::shared_ptr<HttpConnection> m_connection;
  28. HttpRequestHandler m_requestHandler;
  29. };
  30. } // namespace Http
  31. #endif // HTTP_HTTPSERVERIMPL_H