X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/8ccf30b5ce93a419842105f762fb36c0582cbf83..10c0d7324d1a25feebaaf6f5bf9b6054e03dd0b3:/stglibs/sgcp.lib/tcp.cpp diff --git a/stglibs/sgcp.lib/tcp.cpp b/stglibs/sgcp.lib/tcp.cpp deleted file mode 100644 index 5d6c6cbc..00000000 --- a/stglibs/sgcp.lib/tcp.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "tcp.h" - -#include "stg/sgcp_utils.h" - -#include -#include - -#include -#include -#include -#include - -using STG::SGCP::TCPProto; - -TCPProto::TCPProto(ba::io_service& ios) - : m_ios(ios), - m_acceptor(m_ios) -{ -} - -TCPProto::~TCPProto() -{ - close(m_sock); -} - -ConnectionPtr TCPProto::connect(const std::string& address, uint16_t port) -{ - bs::error_code ec; - ConnectionPtr conn = boost::make_shared(m_ios); - conn.socket().connect(ba::local::stream_protocol::enpoint(address, port), ec); - if (ec) - throw Error(ec.message()); - conn->start(); - return conn; -} - -void TCPProto::bind(const std::string& address, uint16_t port, Proto::AcceptHandler handler) -{ - bs::error_code ec; - m_acceptor.bind(address, ec); - if (ec) - throw Error(ec.message()); - - TCPConn* conn = new TCPConn(m_ios); - m_acceptor.async_accept(conn->socket(), conn->endpoint(), boost::bind(&TCPProto::m_handleAccept, this, conn, handler, boost::_1); -} - -void TCPProto::m_handleAccept(TCPConn* conn, Proto::AcceptHandler handler, const boost::system::error_code& ec) -{ - if (ec) { - delete conn; - handler(NULL, "", ec.message()); - return; - } - handler(conn, conn->enpoint().address(), ""); -}