Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / asio / ip / multicast.hpp @ 2486

History | View | Annotate | Download (5.4 kB)

1
//
2
// ip/multicast.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 BOOST_ASIO_IP_MULTICAST_HPP
12
#define BOOST_ASIO_IP_MULTICAST_HPP
13

    
14
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
# pragma once
16
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17

    
18
#include <boost/asio/detail/config.hpp>
19
#include <cstddef>
20
#include <boost/asio/ip/detail/socket_option.hpp>
21

    
22
#include <boost/asio/detail/push_options.hpp>
23

    
24
namespace boost {
25
namespace asio {
26
namespace ip {
27
namespace multicast {
28

    
29
/// Socket option to join a multicast group on a specified interface.
30
/**
31
 * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option.
32
 *
33
 * @par Examples
34
 * Setting the option to join a multicast group:
35
 * @code
36
 * boost::asio::ip::udp::socket socket(io_service); 
37
 * ...
38
 * boost::asio::ip::address multicast_address =
39
 *   boost::asio::ip::address::from_string("225.0.0.1");
40
 * boost::asio::ip::multicast::join_group option(multicast_address);
41
 * socket.set_option(option);
42
 * @endcode
43
 *
44
 * @par Concepts:
45
 * SettableSocketOption.
46
 */
47
#if defined(GENERATING_DOCUMENTATION)
48
typedef implementation_defined join_group;
49
#else
50
typedef boost::asio::ip::detail::socket_option::multicast_request<
51
  BOOST_ASIO_OS_DEF(IPPROTO_IP),
52
  BOOST_ASIO_OS_DEF(IP_ADD_MEMBERSHIP),
53
  BOOST_ASIO_OS_DEF(IPPROTO_IPV6),
54
  BOOST_ASIO_OS_DEF(IPV6_JOIN_GROUP)> join_group;
55
#endif
56

    
57
/// Socket option to leave a multicast group on a specified interface.
58
/**
59
 * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option.
60
 *
61
 * @par Examples
62
 * Setting the option to leave a multicast group:
63
 * @code
64
 * boost::asio::ip::udp::socket socket(io_service); 
65
 * ...
66
 * boost::asio::ip::address multicast_address =
67
 *   boost::asio::ip::address::from_string("225.0.0.1");
68
 * boost::asio::ip::multicast::leave_group option(multicast_address);
69
 * socket.set_option(option);
70
 * @endcode
71
 *
72
 * @par Concepts:
73
 * SettableSocketOption.
74
 */
75
#if defined(GENERATING_DOCUMENTATION)
76
typedef implementation_defined leave_group;
77
#else
78
typedef boost::asio::ip::detail::socket_option::multicast_request<
79
  BOOST_ASIO_OS_DEF(IPPROTO_IP),
80
  BOOST_ASIO_OS_DEF(IP_DROP_MEMBERSHIP),
81
  BOOST_ASIO_OS_DEF(IPPROTO_IPV6),
82
  BOOST_ASIO_OS_DEF(IPV6_LEAVE_GROUP)> leave_group;
83
#endif
84

    
85
/// Socket option for local interface to use for outgoing multicast packets.
86
/**
87
 * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option.
88
 *
89
 * @par Examples
90
 * Setting the option:
91
 * @code
92
 * boost::asio::ip::udp::socket socket(io_service); 
93
 * ...
94
 * boost::asio::ip::address_v4 local_interface =
95
 *   boost::asio::ip::address_v4::from_string("1.2.3.4");
96
 * boost::asio::ip::multicast::outbound_interface option(local_interface);
97
 * socket.set_option(option);
98
 * @endcode
99
 *
100
 * @par Concepts:
101
 * SettableSocketOption.
102
 */
103
#if defined(GENERATING_DOCUMENTATION)
104
typedef implementation_defined outbound_interface;
105
#else
106
typedef boost::asio::ip::detail::socket_option::network_interface<
107
  BOOST_ASIO_OS_DEF(IPPROTO_IP),
108
  BOOST_ASIO_OS_DEF(IP_MULTICAST_IF),
109
  BOOST_ASIO_OS_DEF(IPPROTO_IPV6),
110
  BOOST_ASIO_OS_DEF(IPV6_MULTICAST_IF)> outbound_interface;
111
#endif
112

    
113
/// Socket option for time-to-live associated with outgoing multicast packets.
114
/**
115
 * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option.
116
 *
117
 * @par Examples
118
 * Setting the option:
119
 * @code
120
 * boost::asio::ip::udp::socket socket(io_service); 
121
 * ...
122
 * boost::asio::ip::multicast::hops option(4);
123
 * socket.set_option(option);
124
 * @endcode
125
 *
126
 * @par
127
 * Getting the current option value:
128
 * @code
129
 * boost::asio::ip::udp::socket socket(io_service); 
130
 * ...
131
 * boost::asio::ip::multicast::hops option;
132
 * socket.get_option(option);
133
 * int ttl = option.value();
134
 * @endcode
135
 *
136
 * @par Concepts:
137
 * GettableSocketOption, SettableSocketOption.
138
 */
139
#if defined(GENERATING_DOCUMENTATION)
140
typedef implementation_defined hops;
141
#else
142
typedef boost::asio::ip::detail::socket_option::multicast_hops<
143
  BOOST_ASIO_OS_DEF(IPPROTO_IP),
144
  BOOST_ASIO_OS_DEF(IP_MULTICAST_TTL),
145
  BOOST_ASIO_OS_DEF(IPPROTO_IPV6),
146
  BOOST_ASIO_OS_DEF(IPV6_MULTICAST_HOPS)> hops;
147
#endif
148

    
149
/// Socket option determining whether outgoing multicast packets will be
150
/// received on the same socket if it is a member of the multicast group.
151
/**
152
 * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option.
153
 *
154
 * @par Examples
155
 * Setting the option:
156
 * @code
157
 * boost::asio::ip::udp::socket socket(io_service); 
158
 * ...
159
 * boost::asio::ip::multicast::enable_loopback option(true);
160
 * socket.set_option(option);
161
 * @endcode
162
 *
163
 * @par
164
 * Getting the current option value:
165
 * @code
166
 * boost::asio::ip::udp::socket socket(io_service); 
167
 * ...
168
 * boost::asio::ip::multicast::enable_loopback option;
169
 * socket.get_option(option);
170
 * bool is_set = option.value();
171
 * @endcode
172
 *
173
 * @par Concepts:
174
 * GettableSocketOption, SettableSocketOption.
175
 */
176
#if defined(GENERATING_DOCUMENTATION)
177
typedef implementation_defined enable_loopback;
178
#else
179
typedef boost::asio::ip::detail::socket_option::multicast_enable_loopback<
180
  BOOST_ASIO_OS_DEF(IPPROTO_IP),
181
  BOOST_ASIO_OS_DEF(IP_MULTICAST_LOOP),
182
  BOOST_ASIO_OS_DEF(IPPROTO_IPV6),
183
  BOOST_ASIO_OS_DEF(IPV6_MULTICAST_LOOP)> enable_loopback;
184
#endif
185

    
186
} // namespace multicast
187
} // namespace ip
188
} // namespace asio
189
} // namespace boost
190

    
191
#include <boost/asio/detail/pop_options.hpp>
192

    
193
#endif // BOOST_ASIO_IP_MULTICAST_HPP