src/HTTPServer.cpp
branchv_0
changeset 2 4b05b16b97e6
parent 1 23c516259cc5
child 3 1184f3de5533
equal deleted inserted replaced
1:23c516259cc5 2:4b05b16b97e6
    25 namespace httpd {
    25 namespace httpd {
    26 
    26 
    27 class HTTPServer::HTTPServerImpl {
    27 class HTTPServer::HTTPServerImpl {
    28 public:
    28 public:
    29 	MHD_Daemon* mhd = nullptr;
    29 	MHD_Daemon* mhd = nullptr;
       
    30 	std::shared_ptr<RequestHandler> requestHandler;
    30 };
    31 };
    31 
    32 
    32 HTTPServer* HTTPServer::create() {
    33 void HTTPServer::setRequestHandler(std::shared_ptr<RequestHandler> handler) {
       
    34 	impl->requestHandler = handler;
       
    35 }
       
    36 
       
    37 HTTPServer* HTTPServer::create(HTTPServer::Options options) {
    33 	HTTPServer::HTTPServerImpl* impl = new HTTPServer::HTTPServerImpl();
    38 	HTTPServer::HTTPServerImpl* impl = new HTTPServer::HTTPServerImpl();
    34 
    39 
    35 	void* acceptCallbackData = nullptr;
    40 	void* acceptCallbackData = nullptr;
    36 	MHD_AcceptPolicyCallback acceptCallback = [](void* cls, const struct sockaddr* addr, socklen_t addrlen) {
    41 	MHD_AcceptPolicyCallback acceptCallback = [](void* cls, const struct sockaddr* addr, socklen_t addrlen) {
    37 		return MHD_YES;
    42 		return MHD_YES;
    46 		return MHD_YES;
    51 		return MHD_YES;
    47 	};
    52 	};
    48 
    53 
    49 
    54 
    50 	impl->mhd = MHD_start_daemon(MHD_USE_INTERNAL_POLLING_THREAD,
    55 	impl->mhd = MHD_start_daemon(MHD_USE_INTERNAL_POLLING_THREAD,
    51 			8080,
    56 			options.tcpPort,
    52 			acceptCallback, acceptCallbackData,
    57 			acceptCallback, acceptCallbackData,
    53 			accessCallback, accessCallbackData,
    58 			accessCallback, accessCallbackData,
    54 			MHD_OPTION_THREAD_POOL_SIZE, 10,
    59 			MHD_OPTION_THREAD_POOL_SIZE, 10,
    55 			MHD_OPTION_CONNECTION_TIMEOUT, 60,
    60 			MHD_OPTION_CONNECTION_TIMEOUT, 60,
    56 			MHD_OPTION_END);
    61 			MHD_OPTION_END);