/*** * Copyright (C) Microsoft. All rights reserved. * Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. * * =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * * HTTP Library: interface to implement HTTP server to service http_listeners. * * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ****/ #pragma once #if _WIN32_WINNT < _WIN32_WINNT_VISTA #error "Error: http server APIs are not supported in XP" #endif //_WIN32_WINNT < _WIN32_WINNT_VISTA #include "cpprest/http_listener.h" namespace web { namespace http { namespace experimental { namespace details { /// /// Interface http listeners interact with for receiving and responding to http requests. /// class http_server { public: /// /// Release any held resources. /// virtual ~http_server() {}; /// /// Start listening for incoming requests. /// virtual pplx::task start() = 0; /// /// Registers an http listener. /// virtual pplx::task register_listener( _In_ web::http::experimental::listener::details::http_listener_impl* pListener) = 0; /// /// Unregisters an http listener. /// virtual pplx::task unregister_listener( _In_ web::http::experimental::listener::details::http_listener_impl* pListener) = 0; /// /// Stop processing and listening for incoming requests. /// virtual pplx::task stop() = 0; /// /// Asynchronously sends the specified http response. /// /// The http_response to send. /// A operation which is completed once the response has been sent. virtual pplx::task respond(http::http_response response) = 0; }; } // namespace details } // namespace experimental } // namespace http } // namespace web