Loading...
Searching...
No Matches
internal-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-2023, 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_INTERNAL_TRANSPORT_HPP
27#define NFD_DAEMON_FACE_INTERNAL_TRANSPORT_HPP
28
29#include "transport.hpp"
30
31#include <ndn-cxx/transport/transport.hpp>
32
33namespace nfd::face {
34
39{
40public:
41 virtual void
42 receivePacket(const Block& packet) = 0;
43
44protected:
46};
47
52{
53public:
54 explicit
55 InternalForwarderTransport(const FaceUri& localUri = FaceUri("internal://"),
56 const FaceUri& remoteUri = FaceUri("internal://"),
57 ndn::nfd::FaceScope scope = ndn::nfd::FACE_SCOPE_LOCAL,
58 ndn::nfd::LinkType linkType = ndn::nfd::LINK_TYPE_POINT_TO_POINT);
59
60 void
62 {
63 m_peer = peer;
64 }
65
66 void
67 receivePacket(const Block& packet) final;
68
69protected:
70 void
71 doClose() final;
72
73private:
74 void
75 doSend(const Block& packet) final;
76
77private:
79
80 InternalTransportBase* m_peer = nullptr;
81};
82
87{
88public:
90
99 void
100 connectToForwarder(InternalForwarderTransport* forwarder);
101
102 void
103 receivePacket(const Block& packet) final;
104
105 void
106 send(const Block& block) final;
107
108 void
109 close() final
110 {
111 }
112
113 void
114 pause() final
115 {
116 }
117
118 void
119 resume() final
120 {
121 }
122
123private:
125
126 InternalForwarderTransport* m_forwarder = nullptr;
127 signal::ScopedConnection m_fwTransportStateConn;
128};
129
130} // namespace nfd::face
131
132#endif // NFD_DAEMON_FACE_INTERNAL_TRANSPORT_HPP
Implements a client-side transport that can be paired with an InternalForwarderTransport.
Implements a forwarder-side transport that can be paired with another transport.
void setPeer(InternalTransportBase *peer) noexcept
void doClose() final
Performs Transport specific operations to close the transport.
void receivePacket(const Block &packet) final
Abstracts a transport that can be paired with another.
virtual void receivePacket(const Block &packet)=0
The lower half of a Face.
void send(const Block &packet)
Send a link-layer packet.
Definition transport.cpp:80
#define NFD_LOG_MEMBER_DECL()
Definition logger.hpp:32
Definition main.cpp:34