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-2019, 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
NFD_LOG_MEMBER_DECL_SPECIALIZED
((
DatagramTransport<boost::asio::ip::udp, Multicast>
));
37
38
// Explicit specialization of makeEndpointId for the UDP multicast case.
39
// Note that this "shall be declared before the first use of the specialization
40
// that would cause an implicit instantiation to take place, in every translation
41
// unit in which such a use occurs".
42
template
<>
43
EndpointId
44
DatagramTransport<boost::asio::ip::udp, Multicast>::makeEndpointId
(
const
protocol::endpoint& ep);
45
49
class
MulticastUdpTransport
final :
public
DatagramTransport
<boost::asio::ip::udp, Multicast>
50
{
51
public
:
52
class
Error
:
public
std::runtime_error
53
{
54
public
:
55
using
std::runtime_error::runtime_error;
56
};
57
65
MulticastUdpTransport
(
const
protocol::endpoint& multicastGroup,
66
protocol::socket&& recvSocket,
67
protocol::socket&& sendSocket,
68
ndn::nfd::LinkType
linkType);
69
70
ssize_t
71
getSendQueueLength
() final;
72
73
static
void
74
openRxSocket
(
protocol
::socket& sock,
75
const
protocol
::endpoint& multicastGroup,
76
const
boost
::asio::ip::address& localAddress,
77
const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif =
nullptr
);
78
79
static
void
80
openTxSocket
(
protocol
::socket& sock,
81
const
protocol
::endpoint& localEndpoint,
82
const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif =
nullptr
,
83
bool
enableLoopback = false);
84
85
private:
86
void
87
doSend(const
Block
& packet, const
EndpointId
& endpoint) final;
88
89
void
90
doClose() final;
91
92
private:
93
protocol
::endpoint m_multicastGroup;
94
protocol
::socket m_sendSocket;
95
};
96
97
}
// namespace face
98
}
// namespace nfd
99
100
#endif // NFD_DAEMON_FACE_MULTICAST_UDP_TRANSPORT_HPP
nfd::face::DatagramTransport::makeEndpointId
static EndpointId makeEndpointId(const typename protocol::endpoint &ep)
Definition:
datagram-transport.hpp:262
boost
Definition:
block.hpp:31
nfd::face::MulticastUdpTransport::Error
Definition:
multicast-udp-transport.hpp:53
ndn::nfd::LinkType
LinkType
Definition:
nfd-constants.hpp:57
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:40
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
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
nfd::face::DatagramTransport< boost::asio::ip::udp, Multicast >
nfd::face::MulticastUdpTransport
A Transport that communicates on a UDP multicast group.
Definition:
multicast-udp-transport.hpp:50
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:45
nfd::face::DatagramTransport< boost::asio::ip::udp, Multicast >::protocol
boost::asio::ip::udp protocol
Definition:
datagram-transport.hpp:49
datagram-transport.hpp
ndn::Block
Represents a TLV element of NDN packet format.
Definition:
block.hpp:43
ndn::net
Definition:
link-type-helper.cpp:30
nfd::face::MulticastUdpTransport::getSendQueueLength
ssize_t getSendQueueLength() final
Definition:
multicast-udp-transport.cpp:75
network-interface.hpp
nfd::face::EndpointId
uint64_t EndpointId
Identifies a remote endpoint on the link.
Definition:
face-common.hpp:65
nfd::face::NFD_LOG_MEMBER_DECL_SPECIALIZED
NFD_LOG_MEMBER_DECL_SPECIALIZED((DatagramTransport< boost::asio::ip::udp, Multicast >))
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndnSIM
NFD
daemon
face
multicast-udp-transport.hpp
Generated on Mon Jun 1 2020 22:32:16 for ndnSIM by
1.8.18