From cfef24ce8541ac3934ecfe7248a33d1099d94dfa Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Sat, 6 Nov 2010 02:35:39 +0100 Subject: First take on abstract ConnectionBase, ASIO listening and connection handling. --- server/main.cpp | 58 ++------------------------------------------------------- 1 file changed, 2 insertions(+), 56 deletions(-) (limited to 'server/main.cpp') diff --git a/server/main.cpp b/server/main.cpp index 9341623..3e311e5 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -1,67 +1,13 @@ #include -#include -#include -#include #include -using boost::asio::ip::tcp; - -class tcp_connection : public boost::enable_shared_from_this { - public: - typedef boost::shared_ptr pointer; - - static pointer create(boost::asio::io_service& io_service) { - return pointer(new tcp_connection(io_service)); - } - - tcp::socket& socket() { - return socket_; - } - - void start() { - boost::asio::async_write(socket_, boost::asio::buffer("Hei!\n"), - boost::bind(&tcp_connection::handle_write, shared_from_this())); - } - - private: - tcp::socket socket_; - - tcp_connection(boost::asio::io_service& io_service) : socket_(io_service) { - } - - void handle_write() { - } -}; - -class tcp_server { - public: - tcp_server(boost::asio::io_service& io_service) - : acceptor_(io_service, tcp::endpoint(tcp::v4(), 12345)) { - start_accept(); - } - - private: - tcp::acceptor acceptor_; - - void start_accept() { - tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.io_service()); - - acceptor_.async_accept(new_connection->socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error)); - } - - void handle_accept(tcp_connection::pointer new_connection, const boost::system::error_code& error) { - if(!error) { - new_connection->start(); - start_accept(); - } - } -}; +#include "tcpserver.h" int main() { try { boost::asio::io_service io_service; - tcp_server server(io_service); + TCPServer server(io_service); std::cout << "Listening to port 12345" << std::endl; -- cgit v1.2.3