x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
basic_resolver_iterator.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\asio\ip\basic_resolver_iterator.hpp
旋转
特效
属性
历史版本
// // basic_resolver_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #ifndef BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP #define BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP #if defined(_MSC_VER) && (_MSC_VER >= 1200) # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace boost { namespace asio { namespace ip { /// An iterator over the entries produced by a resolver. /** * The boost::asio::ip::basic_resolver_iterator class template is used to define * iterators over the results returned by a resolver. * * The iterator's value_type, obtained when the iterator is dereferenced, is: * @code const basic_resolver_entry
@endcode * * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Unsafe. */ template
class basic_resolver_iterator : public boost::iterator_facade< basic_resolver_iterator
, const basic_resolver_entry
, boost::forward_traversal_tag> { public: /// Default constructor creates an end iterator. basic_resolver_iterator() { } /// Create an iterator from an addrinfo list returned by getaddrinfo. static basic_resolver_iterator create( boost::asio::detail::addrinfo_type* address_info, const std::string& host_name, const std::string& service_name) { basic_resolver_iterator iter; if (!address_info) return iter; std::string actual_host_name = host_name; if (address_info->ai_canonname) actual_host_name = address_info->ai_canonname; iter.values_.reset(new values_type); while (address_info) { if (address_info->ai_family == PF_INET || address_info->ai_family == PF_INET6) { using namespace std; // For memcpy. typename InternetProtocol::endpoint endpoint; endpoint.resize(static_cast
(address_info->ai_addrlen)); memcpy(endpoint.data(), address_info->ai_addr, address_info->ai_addrlen); iter.values_->push_back( basic_resolver_entry
(endpoint, actual_host_name, service_name)); } address_info = address_info->ai_next; } if (iter.values_->size()) iter.iter_ = iter.values_->begin(); else iter.values_.reset(); return iter; } /// Create an iterator from an endpoint, host name and service name. static basic_resolver_iterator create( const typename InternetProtocol::endpoint& endpoint, const std::string& host_name, const std::string& service_name) { basic_resolver_iterator iter; iter.values_.reset(new values_type); iter.values_->push_back( basic_resolver_entry
( endpoint, host_name, service_name)); iter.iter_ = iter.values_->begin(); return iter; } private: friend class boost::iterator_core_access; void increment() { if (++*iter_ == values_->end()) { // Reset state to match a default constructed end iterator. values_.reset(); typedef typename values_type::const_iterator values_iterator_type; iter_.reset(); } } bool equal(const basic_resolver_iterator& other) const { if (!values_ && !other.values_) return true; if (values_ != other.values_) return false; return *iter_ == *other.iter_; } const basic_resolver_entry
& dereference() const { return **iter_; } typedef std::vector
> values_type; typedef typename values_type::const_iterator values_iter_type; boost::shared_ptr
values_; boost::optional
iter_; }; } // namespace ip } // namespace asio } // namespace boost #include
#endif // BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
basic_resolver_iterator.hpp
网页地址
文件地址
上一页
7/16
下一页
下载
( 4 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.