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/resolver.hpp

52 lines
1.4 KiB
C++
Raw Normal View History

2018-04-01 08:35:05 +00:00
/**
* php-asio/resolver.hpp
*
* @author CismonX<admin@cismon.net>
*/
#pragma once
#include "common.hpp"
#include "base.hpp"
namespace asio
{
/// Wrapper for Boost.Asio resolver.
/// Provides hostname resolution.
template <typename Protocol>
class resolver : public base
{
/// Resolver iterator which holds an endpoint.
using iterator = typename Protocol::resolver::iterator;
/// Boost.Asio resolver instance.
typename Protocol::resolver resolver_;
/// Resolve handler.
zval* handler(const boost::system::error_code& error,
iterator iter, zval* callback, zval* argument);
public:
/// Constructor.
explicit resolver(
boost::asio::io_service& io_service
) : base(io_service), resolver_(io_service) {}
/* {{{ proto Future Resolver::resolve(string host, [string service = ""],
* [callable callback], [mixed argument]);
* Initiate an asynchronous resolve against the resolver. */
P3_METHOD_DECLARE(resolve);
/* }}} */
/* {{{ proto int Resolver::cancel(void);
* Cancel all asynchronous operations on this resolver. */
P3_METHOD_DECLARE(cancel);
/* }}} */
PHP_ASIO_CE_DECLARE();
};
using tcp_resolver = resolver<tcp>;
using udp_resolver = resolver<udp>;
}