1 //
2 // ip/basic_resolver_entry.hpp
3 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6 //
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 //
10 
11 #ifndef ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
12 #define ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
13 
14 
15 #include "asio/detail/config.hpp"
16 #include <string>
17 
18 #include "asio/detail/push_options.hpp"
19 
20 namespace asio {
21 namespace ip {
22 
23 /// An entry produced by a resolver.
24 /**
25  * The asio::ip::basic_resolver_entry class template describes an entry
26  * as returned by a resolver.
27  *
28  * @par Thread Safety
29  * @e Distinct @e objects: Safe.@n
30  * @e Shared @e objects: Unsafe.
31  */
32 template <typename InternetProtocol>
33 class basic_resolver_entry
34 {
35 public:
36   /// The protocol type associated with the endpoint entry.
37   typedef InternetProtocol protocol_type;
38 
39   /// The endpoint type associated with the endpoint entry.
40   typedef typename InternetProtocol::endpoint endpoint_type;
41 
42   /// Default constructor.
43   basic_resolver_entry()
44   {
45   }
46 
47   /// Construct with specified endpoint, host name and service name.
48   basic_resolver_entry(const endpoint_type& ep,
49       const std::string& host, const std::string& service)
50     : endpoint_(ep),
51       host_name_(host),
52       service_name_(service)
53   {
54   }
55 
56   /// Get the endpoint associated with the entry.
57   endpoint_type endpoint() const
58   {
59     return endpoint_;
60   }
61 
62   /// Convert to the endpoint associated with the entry.
63   operator endpoint_type() const
64   {
65     return endpoint_;
66   }
67 
68   /// Get the host name associated with the entry.
69   std::string host_name() const
70   {
71     return host_name_;
72   }
73 
74   /// Get the service name associated with the entry.
75   std::string service_name() const
76   {
77     return service_name_;
78   }
79 
80 private:
81   endpoint_type endpoint_;
82   std::string host_name_;
83   std::string service_name_;
84 };
85 
86 } // namespace ip
87 } // namespace asio
88 
89 #include "asio/detail/pop_options.hpp"
90 
91 #endif // ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
92