CppServer 1.0.5.0
C++ Server Library
Loading...
Searching...
No Matches
tcp_resolver.h
Go to the documentation of this file.
1
9#ifndef CPPSERVER_ASIO_TCP_RESOLVER_H
10#define CPPSERVER_ASIO_TCP_RESOLVER_H
11
12#include "service.h"
13
14namespace CppServer {
15namespace Asio {
16
18
24{
25public:
27
30 TCPResolver(const std::shared_ptr<Service>& service);
31 TCPResolver(const TCPResolver&) = delete;
33 virtual ~TCPResolver() { Cancel(); }
34
37
39 std::shared_ptr<Service>& service() noexcept { return _service; }
41 std::shared_ptr<asio::io_service>& io_service() noexcept { return _io_service; }
43 asio::io_service::strand& strand() noexcept { return _strand; }
45 asio::ip::tcp::resolver& resolver() noexcept { return _resolver; }
46
48 virtual void Cancel() { _resolver.cancel(); }
49
50private:
51 // Asio service
52 std::shared_ptr<Service> _service;
53 // Asio IO service
54 std::shared_ptr<asio::io_service> _io_service;
55 // Asio service strand for serialized handler execution
56 asio::io_service::strand _strand;
57 bool _strand_required;
58 // TCP resolver
59 asio::ip::tcp::resolver _resolver;
60};
61
62} // namespace Asio
63} // namespace CppServer
64
65#endif // CPPSERVER_ASIO_TCP_RESOLVER_H
Asio allocate handler wrapper.
Definition memory.h:133
TCPResolver & operator=(TCPResolver &&)=delete
TCPResolver(const TCPResolver &)=delete
std::shared_ptr< Service > & service() noexcept
Get the Asio service.
asio::io_service::strand & strand() noexcept
Get the Asio service strand for serialized handler execution.
std::shared_ptr< asio::io_service > & io_service() noexcept
Get the Asio IO service.
asio::ip::tcp::resolver & resolver() noexcept
Get the TCP resolver.
TCPResolver & operator=(const TCPResolver &)=delete
TCPResolver(TCPResolver &&)=delete
virtual void Cancel()
Cancel any asynchronous operations that are waiting on the resolver.
C++ Server project definitions.
Definition asio.h:56
Asio service definition.