Ejemplo n.º 1
0
    void Listener<SocketType>::OnAccept(NetworkThread<SocketType> *worker, std::shared_ptr<SocketType> const& socket, const boost::system::error_code &ec)
    {
        // an error has occurred
        if (ec)
            worker->RemoveSocket(socket.get());
        else
            socket->Open();

        BeginAccept();
    }
Ejemplo n.º 2
0
    Listener<SocketType>::Listener(std::string const& address, int port, int workerThreads)
        : m_service(new boost::asio::io_service()), m_acceptor(new boost::asio::ip::tcp::acceptor(*m_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string(address), port)))
    {
        m_workerThreads.reserve(workerThreads);
        for (auto i = 0; i < workerThreads; ++i)
            m_workerThreads.push_back(std::unique_ptr<NetworkThread<SocketType>>(new NetworkThread<SocketType>));

        BeginAccept();

        m_acceptorThread = std::thread([this]() { this->m_service->run(); });
    }
Ejemplo n.º 3
0
    Listener<SocketType>::Listener(int port, int workerThreads)
        : m_acceptor(m_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port))
    {
        m_workerThreads.reserve(workerThreads);
        for (int i = 0; i < workerThreads; ++i)
            m_workerThreads.push_back(std::unique_ptr<NetworkThread<SocketType>>(new NetworkThread<SocketType>));

        BeginAccept();

        m_acceptorThread = std::thread([this]() { this->m_service.run(); });
    }
Ejemplo n.º 4
0
	SocketPtr Socket::Accept()
	{
		return EndAccept(BeginAccept());
	}