This repository has been archived on 2018-04-01. You can view files and clone it, but cannot push or open issues or pull requests.
php-asio/src/acceptor.hpp

53 lines
1.1 KiB
C++

/**
* php-asio/acceptor.hpp
*
* @author CismonX<admin@cismon.net>
*/
#pragma once
#include "common.hpp"
#include "base.hpp"
#include "socket.hpp"
namespace asio
{
/// Wrapper for Boost.Asio stream socket acceptor.
/// Provide TCP services.
template <typename Protocol>
class acceptor : public base
{
/// Boost.Asio acceptor instance.
typename Protocol::acceptor acceptor_;
/// Accept handler.
zval* handler(const boost::system::error_code& error,
socket<Protocol>* socket, zval* callback, zval* argument);
public:
/// Constructor.
explicit acceptor(
boost::asio::io_service& io_service
) : base(io_service), acceptor_(io_service) {}
P3_METHOD_DECLARE(open);
P3_METHOD_DECLARE(assign);
P3_METHOD_DECLARE(bind);
P3_METHOD_DECLARE(listen);
P3_METHOD_DECLARE(accept);
P3_METHOD_DECLARE(cancel);
P3_METHOD_DECLARE(close);
PHP_ASIO_CE_DECLARE();
};
using tcp_acceptor = acceptor<tcp>;
using unix_acceptor = acceptor<unix>;
}