From 3f7a10f82567a0be04a424e0ddc360a73670c9d7 Mon Sep 17 00:00:00 2001 From: Oleg Morozenkov Date: Mon, 27 Jul 2015 20:59:09 +0300 Subject: Documentation --- src/tgbot/net/HttpServer.h | 93 ---------------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 src/tgbot/net/HttpServer.h (limited to 'src/tgbot/net/HttpServer.h') diff --git a/src/tgbot/net/HttpServer.h b/src/tgbot/net/HttpServer.h deleted file mode 100644 index 92a667a..0000000 --- a/src/tgbot/net/HttpServer.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2015 Oleg Morozenkov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef TGBOT_HTTPSERVER_H -#define TGBOT_HTTPSERVER_H - -#include - -#include - -#include "tgbot/net/HttpParser.h" - -namespace TgBot { - -template -class HttpServer { - -private: - class Connection; - -public: - typedef std::function)> ServerHandler; - - HttpServer(std::shared_ptr>& acceptor, const ServerHandler& handler) : _acceptor(acceptor), _handler(handler) { - } - - void start() { - std::shared_ptr> socket(new boost::asio::basic_stream_socket(acceptor->get_io_service())); - std::shared_ptr> connection(new Connection(socket, _handler)); - acceptor->async_accept(*connection->socket, [this, connection]() { - connection->start(); - start(); - }); - _ioService.run(); - } - - void stop() { - _ioService.stop(); - } - -private: - template - class Connection { - - public: - Connection(std::shared_ptr>& socket, const ServerHandler& handler) : socket(socket), _handler(handler) { - boost::asio::socket_base::keep_alive option(true); - socket.set_option(option); - } - - void start() { - data.reserve(10240); - socket->async_receive(data, [this]() { - std::map headers; - std::string body = HttpParser::parseResponse(data, headers); - socket->async_send(_handler(body, headers)); - }); - } - - std::shared_ptr> socket; - std::string data; - - private: - const ServerHandler _handler; - }; - - boost::asio::io_service _ioService; - std::shared_ptr> _acceptor; - const ServerHandler _handler; -}; - -} - -#endif //TGBOT_HTTPSERVER_H -- cgit v1.2.3