NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
multicast-udp-transport.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014-2018, Regents of the University of California,
4
* Arizona Board of Regents,
5
* Colorado State University,
6
* University Pierre & Marie Curie, Sorbonne University,
7
* Washington University in St. Louis,
8
* Beijing Institute of Technology,
9
* The University of Memphis.
10
*
11
* This file is part of NFD (Named Data Networking Forwarding Daemon).
12
* See AUTHORS.md for complete list of NFD authors and contributors.
13
*
14
* NFD is free software: you can redistribute it and/or modify it under the terms
15
* of the GNU General Public License as published by the Free Software Foundation,
16
* either version 3 of the License, or (at your option) any later version.
17
*
18
* NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20
* PURPOSE. See the GNU General Public License for more details.
21
*
22
* You should have received a copy of the GNU General Public License along with
23
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24
*/
25
26
#ifndef NFD_DAEMON_FACE_MULTICAST_UDP_TRANSPORT_HPP
27
#define NFD_DAEMON_FACE_MULTICAST_UDP_TRANSPORT_HPP
28
29
#include "
datagram-transport.hpp
"
30
31
#include <ndn-cxx/net/network-interface.hpp>
32
33
namespace
nfd
{
34
namespace
face
{
35
36
// Explicit specialization of makeEndpointId for the UDP multicast case.
37
// Note that this "shall be declared before the first use of the specialization
38
// that would cause an implicit instantiation to take place, in every translation
39
// unit in which such a use occurs".
40
template
<>
41
Transport::EndpointId
42
DatagramTransport<boost::asio::ip::udp, Multicast>::makeEndpointId
(
const
protocol::endpoint& ep);
43
47
class
MulticastUdpTransport
final :
public
DatagramTransport
<boost::asio::ip::udp, Multicast>
48
{
49
public
:
50
class
Error
:
public
std::runtime_error
51
{
52
public
:
53
explicit
54
Error
(
const
std::string& what)
55
:
std
::runtime_error(what)
56
{
57
}
58
};
59
67
MulticastUdpTransport
(
const
protocol::endpoint& multicastGroup,
68
protocol::socket&& recvSocket,
69
protocol::socket&& sendSocket,
70
ndn::nfd::LinkType
linkType);
71
72
ssize_t
73
getSendQueueLength
() final;
74
75
static
void
76
openRxSocket
(
protocol
::socket& sock,
77
const
protocol
::endpoint& multicastGroup,
78
const
boost
::asio::ip::address& localAddress,
79
const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif =
nullptr
);
80
81
static
void
82
openTxSocket
(
protocol
::socket& sock,
83
const
protocol
::endpoint& localEndpoint,
84
const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif =
nullptr
,
85
bool
enableLoopback = false);
86
87
private:
88
void
89
doSend(
Transport
::Packet&& packet) final;
90
91
void
92
doClose() final;
93
94
private:
95
protocol
::endpoint m_multicastGroup;
96
protocol
::socket m_sendSocket;
97
};
98
99
}
// namespace face
100
}
// namespace nfd
101
102
#endif // NFD_DAEMON_FACE_MULTICAST_UDP_TRANSPORT_HPP
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
nfd::face::MulticastUdpTransport::Error
Definition:
multicast-udp-transport.hpp:50
ndn::nfd::LinkType
LinkType
Definition:
nfd-constants.hpp:57
nfd::face::MulticastUdpTransport::openRxSocket
static void openRxSocket(protocol::socket &sock, const protocol::endpoint &multicastGroup, const boost::asio::ip::address &localAddress, const shared_ptr< const ndn::net::NetworkInterface > &netif=nullptr)
Definition:
multicast-udp-transport.cpp:134
boost
Definition:
ndn-content-store.hpp:209
nfd::face::MulticastUdpTransport::getSendQueueLength
ssize_t getSendQueueLength() final
Definition:
multicast-udp-transport.cpp:76
std
STL namespace.
nfd::face::DatagramTransport
Implements Transport for datagram-based protocols.
Definition:
datagram-transport.hpp:46
nfd::face::DatagramTransport::makeEndpointId
static EndpointId makeEndpointId(const typename protocol::endpoint &ep)
Definition:
datagram-transport.hpp:269
nfd::face::MulticastUdpTransport::MulticastUdpTransport
MulticastUdpTransport(const protocol::endpoint &multicastGroup, protocol::socket &&recvSocket, protocol::socket &&sendSocket, ndn::nfd::LinkType linkType)
Creates a UDP-based transport for multicast communication.
Definition:
multicast-udp-transport.cpp:46
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:40
nfd::face::MulticastUdpTransport::openTxSocket
static void openTxSocket(protocol::socket &sock, const protocol::endpoint &localEndpoint, const shared_ptr< const ndn::net::NetworkInterface > &netif=nullptr, bool enableLoopback=false)
Definition:
multicast-udp-transport.cpp:169
datagram-transport.hpp
nfd::face::MulticastUdpTransport::Error::Error
Error(const std::string &what)
Definition:
multicast-udp-transport.hpp:54
nfd::face::MulticastUdpTransport
A Transport that communicates on a UDP multicast group.
Definition:
multicast-udp-transport.hpp:47
face
nfd::face::DatagramTransport< boost::asio::ip::udp, Multicast >::protocol
boost::asio::ip::udp protocol
Definition:
datagram-transport.hpp:49
nfd::face::Transport::EndpointId
uint64_t EndpointId
identifies an endpoint on the link
Definition:
transport.hpp:118
nfd::face::Transport
the lower part of a Face
Definition:
transport.hpp:113
ndn::net
Definition:
link-type-helper.cpp:30
ndnSIM
NFD
daemon
face
multicast-udp-transport.hpp
Generated on Sun Feb 25 2018 13:27:06 for ndnSIM by
1.8.14