~ubuntu-branches/ubuntu/maverick/libtorrent-rasterbar/maverick

« back to all changes in this revision

Viewing changes to include/libtorrent/asio/ip/multicast.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Sauthier
  • Date: 2010-08-10 12:59:37 UTC
  • mfrom: (1.3.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20100810125937-jbcmmf17y8yo9hgz
Tags: 0.15.0-0ubuntu1
* New upstream version.
* debian/patches/100_fix_html_docs.patch: refreshed.
* debian/control: bump up standards-version to 3.9.1 (no changes).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//
2
 
// multicast.hpp
3
 
// ~~~~~~~~~~~~~
4
 
//
5
 
// Copyright (c) 2003-2008 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_MULTICAST_HPP
12
 
#define 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 "asio/detail/push_options.hpp"
19
 
 
20
 
#include "asio/detail/push_options.hpp"
21
 
#include <cstddef>
22
 
#include <boost/config.hpp>
23
 
#include "asio/detail/pop_options.hpp"
24
 
 
25
 
#include "asio/ip/detail/socket_option.hpp"
26
 
 
27
 
namespace asio {
28
 
namespace ip {
29
 
namespace multicast {
30
 
 
31
 
/// Socket option to join a multicast group on a specified interface.
32
 
/**
33
 
 * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option.
34
 
 *
35
 
 * @par Examples
36
 
 * Setting the option to join a multicast group:
37
 
 * @code
38
 
 * asio::ip::udp::socket socket(io_service); 
39
 
 * ...
40
 
 * asio::ip::address multicast_address =
41
 
 *   asio::ip::address::from_string("225.0.0.1");
42
 
 * asio::ip::multicast::join_group option(multicast_address);
43
 
 * socket.set_option(option);
44
 
 * @endcode
45
 
 *
46
 
 * @par Concepts:
47
 
 * SettableSocketOption.
48
 
 */
49
 
#if defined(GENERATING_DOCUMENTATION)
50
 
typedef implementation_defined join_group;
51
 
#else
52
 
typedef asio::ip::detail::socket_option::multicast_request<
53
 
  IPPROTO_IP, IP_ADD_MEMBERSHIP, IPPROTO_IPV6, IPV6_JOIN_GROUP> join_group;
54
 
#endif
55
 
 
56
 
/// Socket option to leave a multicast group on a specified interface.
57
 
/**
58
 
 * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option.
59
 
 *
60
 
 * @par Examples
61
 
 * Setting the option to leave a multicast group:
62
 
 * @code
63
 
 * asio::ip::udp::socket socket(io_service); 
64
 
 * ...
65
 
 * asio::ip::address multicast_address =
66
 
 *   asio::ip::address::from_string("225.0.0.1");
67
 
 * asio::ip::multicast::leave_group option(multicast_address);
68
 
 * socket.set_option(option);
69
 
 * @endcode
70
 
 *
71
 
 * @par Concepts:
72
 
 * SettableSocketOption.
73
 
 */
74
 
#if defined(GENERATING_DOCUMENTATION)
75
 
typedef implementation_defined leave_group;
76
 
#else
77
 
typedef asio::ip::detail::socket_option::multicast_request<
78
 
  IPPROTO_IP, IP_DROP_MEMBERSHIP, IPPROTO_IPV6, IPV6_LEAVE_GROUP> leave_group;
79
 
#endif
80
 
 
81
 
/// Socket option for local interface to use for outgoing multicast packets.
82
 
/**
83
 
 * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option.
84
 
 *
85
 
 * @par Examples
86
 
 * Setting the option:
87
 
 * @code
88
 
 * asio::ip::udp::socket socket(io_service); 
89
 
 * ...
90
 
 * asio::ip::address_v4 local_interface =
91
 
 *   asio::ip::address_v4::from_string("1.2.3.4");
92
 
 * asio::ip::multicast::outbound_interface option(local_interface);
93
 
 * socket.set_option(option);
94
 
 * @endcode
95
 
 *
96
 
 * @par Concepts:
97
 
 * SettableSocketOption.
98
 
 */
99
 
#if defined(GENERATING_DOCUMENTATION)
100
 
typedef implementation_defined outbound_interface;
101
 
#else
102
 
typedef asio::ip::detail::socket_option::network_interface<
103
 
  IPPROTO_IP, IP_MULTICAST_IF, IPPROTO_IPV6, IPV6_MULTICAST_IF>
104
 
  outbound_interface;
105
 
#endif
106
 
 
107
 
/// Socket option for time-to-live associated with outgoing multicast packets.
108
 
/**
109
 
 * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option.
110
 
 *
111
 
 * @par Examples
112
 
 * Setting the option:
113
 
 * @code
114
 
 * asio::ip::udp::socket socket(io_service); 
115
 
 * ...
116
 
 * asio::ip::multicast::hops option(4);
117
 
 * socket.set_option(option);
118
 
 * @endcode
119
 
 *
120
 
 * @par
121
 
 * Getting the current option value:
122
 
 * @code
123
 
 * asio::ip::udp::socket socket(io_service); 
124
 
 * ...
125
 
 * asio::ip::multicast::hops option;
126
 
 * socket.get_option(option);
127
 
 * int ttl = option.value();
128
 
 * @endcode
129
 
 *
130
 
 * @par Concepts:
131
 
 * GettableSocketOption, SettableSocketOption.
132
 
 */
133
 
#if defined(GENERATING_DOCUMENTATION)
134
 
typedef implementation_defined hops;
135
 
#else
136
 
typedef asio::ip::detail::socket_option::multicast_hops<
137
 
  IPPROTO_IP, IP_MULTICAST_TTL, IPPROTO_IPV6, IPV6_MULTICAST_HOPS> hops;
138
 
#endif
139
 
 
140
 
/// Socket option determining whether outgoing multicast packets will be
141
 
/// received on the same socket if it is a member of the multicast group.
142
 
/**
143
 
 * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option.
144
 
 *
145
 
 * @par Examples
146
 
 * Setting the option:
147
 
 * @code
148
 
 * asio::ip::udp::socket socket(io_service); 
149
 
 * ...
150
 
 * asio::ip::multicast::enable_loopback option(true);
151
 
 * socket.set_option(option);
152
 
 * @endcode
153
 
 *
154
 
 * @par
155
 
 * Getting the current option value:
156
 
 * @code
157
 
 * asio::ip::udp::socket socket(io_service); 
158
 
 * ...
159
 
 * asio::ip::multicast::enable_loopback option;
160
 
 * socket.get_option(option);
161
 
 * bool is_set = option.value();
162
 
 * @endcode
163
 
 *
164
 
 * @par Concepts:
165
 
 * GettableSocketOption, SettableSocketOption.
166
 
 */
167
 
#if defined(GENERATING_DOCUMENTATION)
168
 
typedef implementation_defined enable_loopback;
169
 
#else
170
 
typedef asio::ip::detail::socket_option::multicast_enable_loopback<
171
 
  IPPROTO_IP, IP_MULTICAST_LOOP, IPPROTO_IPV6, IPV6_MULTICAST_LOOP>
172
 
  enable_loopback;
173
 
#endif
174
 
 
175
 
} // namespace multicast
176
 
} // namespace ip
177
 
} // namespace asio
178
 
 
179
 
#include "asio/detail/pop_options.hpp"
180
 
 
181
 
#endif // ASIO_IP_MULTICAST_HPP