From 5d94fe647e59aaec7775f1e1bd4a4982b677af01 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Wed, 29 Dec 2010 22:08:06 +0100 Subject: HTTPServer/HTTPConnection cleanup. --- httpd.cpp | 53 ++++++++--------------------------------------------- 1 file changed, 8 insertions(+), 45 deletions(-) (limited to 'httpd.cpp') diff --git a/httpd.cpp b/httpd.cpp index 9e6d132..d67533d 100644 --- a/httpd.cpp +++ b/httpd.cpp @@ -1,58 +1,21 @@ #include "httpd.h" -#include "music.h" -#include "http.h" #include -#include -#include -#include -#include -#include - -HTTPConnection::HTTPConnection(boost::asio::io_service& io_service) : socket(io_service) { -} - -void HTTPConnection::handle_write(const boost::system::error_code& error, size_t bytes_transferred) { -} - -void HTTPConnection::handle_read(const boost::system::error_code& error, size_t bytes_transferred) { - std::istream is(&buf); - HTTPRequest req(is); - - HTTPResponse res(socket); - - MusicListing::p ml = music::get(req.path); - if(ml) { - res.code = 200; - res.status = "OK"; - - ml->render(req, res); - } else { - res.code = 404; - res.status = "Not Found"; - } -} - -HTTPConnection::pointer HTTPConnection::create(boost::asio::io_service& io_service) { - return pointer(new HTTPConnection(io_service)); -} - -void HTTPConnection::start() { - boost::asio::async_read_until(socket, buf, "\r\n\r\n", boost::bind(&HTTPConnection::handle_read, shared_from_this(), - boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); +HTTP::Server::Server(boost::asio::io_service& io_service, const tcp::endpoint& endpoint) : acceptor_(io_service, endpoint) { + start_accept(); } -HTTPServer::HTTPServer(boost::asio::io_service& io_service, const tcp::endpoint& endpoint) : acceptor_(io_service, endpoint) { - start_accept(); +void HTTP::Server::add_handler(const std::string& name, Handler handler) { + handlers[name] = handler; } -void HTTPServer::start_accept() { - HTTPConnection::pointer new_connection = HTTPConnection::create(acceptor_.io_service()); - acceptor_.async_accept(new_connection->socket, boost::bind(&HTTPServer::handle_accept, this, new_connection, boost::asio::placeholders::error)); +void HTTP::Server::start_accept() { + Connection::p new_connection = Connection::p(new Connection(acceptor_.io_service())); + acceptor_.async_accept(new_connection->socket, boost::bind(&Server::handle_accept, this, new_connection, boost::asio::placeholders::error)); } -void HTTPServer::handle_accept(HTTPConnection::pointer new_connection, const boost::system::error_code& error) { +void HTTP::Server::handle_accept(Connection::p new_connection, const boost::system::error_code& error) { if(!error) { new_connection->start(); start_accept(); -- cgit v1.2.3