NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
udp-factory.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_UDP_FACTORY_HPP
27
#define NFD_DAEMON_FACE_UDP_FACTORY_HPP
28
29
#include "
protocol-factory.hpp
"
30
#include "
udp-channel.hpp
"
31
32
namespace
nfd
{
33
namespace
face {
34
37
class
UdpFactory
:
public
ProtocolFactory
38
{
39
public
:
40
class
Error
:
public
ProtocolFactory::Error
41
{
42
public
:
43
using
ProtocolFactory::Error::Error;
44
};
45
46
static
const
std::string&
47
getId
() noexcept;
48
49
explicit
50
UdpFactory
(const
CtorParams
& params);
51
67
shared_ptr<
UdpChannel
>
68
createChannel
(const udp::
Endpoint
& localEndpoint,
69
time
::nanoseconds idleTimeout);
70
93
shared_ptr<
Face
>
94
createMulticastFace
(const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif,
95
const
boost
::asio::ip::address& localAddress,
96
const udp::
Endpoint
& multicastEndpoint);
97
98
private:
101
void
102
doProcessConfig(
OptionalConfigSection
configSection,
103
FaceSystem
::ConfigContext& context) override;
104
105
void
106
doCreateFace(const
CreateFaceRequest
& req,
107
const
FaceCreatedCallback
& onCreated,
108
const
FaceCreationFailedCallback
& onFailure) override;
109
110
std::vector<shared_ptr<const
Channel
>>
111
doGetChannels() const override;
112
116
std::vector<shared_ptr<
Face
>>
117
applyMcastConfigToNetif(const shared_ptr<const
ndn
::
net
::NetworkInterface>& netif);
118
121
void
122
applyMcastConfig(const
FaceSystem
::ConfigContext& context);
123
124
private:
125
bool
m_wantCongestionMarking = false;
126
std::map<udp::
Endpoint
, shared_ptr<
UdpChannel
>> m_channels;
127
128
struct MulticastConfig
129
{
130
bool
isEnabled =
false
;
131
udp::Endpoint
group =
udp::getDefaultMulticastGroup
();
132
udp::Endpoint
groupV6 =
udp::getDefaultMulticastGroupV6
();
133
ndn::nfd::LinkType
linkType =
ndn::nfd::LINK_TYPE_MULTI_ACCESS
;
134
NetworkInterfacePredicate
netifPredicate;
135
};
136
MulticastConfig m_mcastConfig;
137
std::map<udp::Endpoint, shared_ptr<Face>> m_mcastFaces;
138
139
signal::ScopedConnection
m_netifAddConn;
140
struct
NetifConns
141
{
142
signal::ScopedConnection
addrAddConn;
143
};
144
std::map<int, NetifConns> m_netifConns;
// ifindex => signal connections
145
};
146
147
}
// namespace face
148
}
// namespace nfd
149
150
#endif // NFD_DAEMON_FACE_UDP_FACTORY_HPP
protocol-factory.hpp
nfd::udp::getDefaultMulticastGroup
Endpoint getDefaultMulticastGroup()
Definition:
udp-protocol.hpp:44
ndn::util::signal::ScopedConnection
Disconnects a Connection automatically upon destruction.
Definition:
scoped-connection.hpp:34
nfd::face::FaceSystem
entry point of the face system
Definition:
face-system.hpp:52
nfd::tcp::Endpoint
boost::asio::ip::tcp::endpoint Endpoint
Definition:
tcp-channel.hpp:34
boost
Definition:
block.hpp:31
nfd::face::NetworkInterfacePredicate
Represents a predicate to accept or reject a ndn::net::NetworkInterface.
Definition:
network-predicate.hpp:98
ndn::nfd::LinkType
LinkType
Definition:
nfd-constants.hpp:57
nfd::face::ProtocolFactory
Provides support for an underlying protocol.
Definition:
protocol-factory.hpp:60
nfd::face::Channel
Represents a channel that listens on a local endpoint.
Definition:
channel.hpp:42
nfd::OptionalConfigSection
boost::optional< const ConfigSection & > OptionalConfigSection
an optional config file section
Definition:
config-file.hpp:41
ndn::nfd::LINK_TYPE_MULTI_ACCESS
@ LINK_TYPE_MULTI_ACCESS
link is multi-access
Definition:
nfd-constants.hpp:60
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:40
nfd::face::Face
generalization of a network interface
Definition:
face.hpp:53
ndn::time
Definition:
time-custom-clock.hpp:28
udp-channel.hpp
nfd::face::ProtocolFactoryCtorParams
Parameters to ProtocolFactory constructor.
Definition:
protocol-factory.hpp:47
nfd::face::ProtocolFactory::CreateFaceRequest
Encapsulates a face creation request and all its parameters.
Definition:
protocol-factory.hpp:134
nfd::face::ProtocolFactory::Error
Base class for all exceptions thrown by ProtocolFactory subclasses.
Definition:
protocol-factory.hpp:92
nfd::face::FaceCreatedCallback
std::function< void(const shared_ptr< Face > &)> FaceCreatedCallback
Prototype for the callback that is invoked when a face is created (in response to an incoming connect...
Definition:
channel.hpp:74
nfd::face::UdpFactory
Protocol factory for UDP over IPv4 and IPv6.
Definition:
udp-factory.hpp:38
nfd::face::UdpFactory::createMulticastFace
shared_ptr< Face > createMulticastFace(const shared_ptr< const ndn::net::NetworkInterface > &netif, const boost::asio::ip::address &localAddress, const udp::Endpoint &multicastEndpoint)
Create a multicast UDP face.
Definition:
udp-factory.cpp:317
ndn::net
Definition:
link-type-helper.cpp:30
nfd::udp::Endpoint
boost::asio::ip::udp::endpoint Endpoint
Definition:
udp-protocol.hpp:34
nfd::face::UdpFactory::Error
Definition:
udp-factory.hpp:41
nfd::face::UdpFactory::getId
static const std::string & getId() noexcept
Definition:
udp-factory.cpp:44
nfd::face::UdpChannel
Class implementing UDP-based channel to create faces.
Definition:
udp-channel.hpp:41
nfd::face::FaceCreationFailedCallback
std::function< void(uint32_t status, const std::string &reason)> FaceCreationFailedCallback
Prototype for the callback that is invoked when a face fails to be created.
Definition:
channel.hpp:78
nfd::face::UdpFactory::createChannel
shared_ptr< UdpChannel > createChannel(const udp::Endpoint &localEndpoint, time::nanoseconds idleTimeout)
Create UDP-based channel using udp::Endpoint.
Definition:
udp-factory.cpp:292
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
nfd::udp::getDefaultMulticastGroupV6
Endpoint getDefaultMulticastGroupV6()
Definition:
udp-protocol.hpp:52
ndnSIM
NFD
daemon
face
udp-factory.hpp
Generated on Mon Jun 1 2020 22:32:16 for ndnSIM by
1.8.18