Home | History | Annotate | Download | only in ip
      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