Implements Transport for datagram-based protocols. More...
#include <datagram-transport.hpp>
Public Types | |
typedef Protocol | protocol |
Public Types inherited from nfd::face::Transport | |
using | Counters = TransportCounters |
Counters provided by a transport. More... | |
Public Member Functions | |
DatagramTransport (typename protocol::socket &&socket) | |
Construct datagram transport. More... | |
ssize_t | getSendQueueLength () override |
void | receiveDatagram (const uint8_t *buffer, size_t nBytesReceived, const boost::system::error_code &error) |
Receive datagram, translate buffer into packet, deliver to parent class. More... | |
Public Member Functions inherited from nfd::face::Transport | |
Transport () | |
Default constructor. More... | |
virtual | ~Transport () |
void | setFaceAndLinkService (Face &face, LinkService &service) |
set Face and LinkService for Transport More... | |
const Face * | getFace () const |
const LinkService * | getLinkService () const |
LinkService * | getLinkService () |
virtual const Counters & | getCounters () const |
void | close () |
Request the transport to be closed. More... | |
void | send (const Block &packet, const EndpointId &endpoint=0) |
Send a link-layer packet. More... | |
FaceUri | getLocalUri () const |
FaceUri | getRemoteUri () const |
ndn::nfd::FaceScope | getScope () const |
ndn::nfd::FacePersistency | getPersistency () const |
bool | canChangePersistencyTo (ndn::nfd::FacePersistency newPersistency) const |
check whether the face persistency can be changed to newPersistency More... | |
void | setPersistency (ndn::nfd::FacePersistency newPersistency) |
changes face persistency setting More... | |
ndn::nfd::LinkType | getLinkType () const |
ssize_t | getMtu () const |
ssize_t | getSendQueueCapacity () const |
TransportState | getState () const |
time::steady_clock::TimePoint | getExpirationTime () const |
Protected Member Functions | |
void | doClose () override |
performs Transport specific operations to close the transport More... | |
void | doSend (const Block &packet, const EndpointId &endpoint) override |
performs Transport specific operations to send a packet More... | |
void | handleSend (const boost::system::error_code &error, size_t nBytesSent) |
void | handleReceive (const boost::system::error_code &error, size_t nBytesReceived) |
void | processErrorCode (const boost::system::error_code &error) |
bool | hasRecentlyReceived () const |
void | resetRecentlyReceived () |
NFD_LOG_MEMBER_DECL () | |
EndpointId | makeEndpointId (const protocol::endpoint &ep) |
EndpointId | makeEndpointId (const protocol::endpoint &ep) |
Protected Member Functions inherited from nfd::face::Transport | |
void | receive (const Block &packet, const EndpointId &endpoint=0) |
Pass a received link-layer packet to the upper layer for further processing. More... | |
void | setLocalUri (const FaceUri &uri) |
void | setRemoteUri (const FaceUri &uri) |
void | setScope (ndn::nfd::FaceScope scope) |
void | setLinkType (ndn::nfd::LinkType linkType) |
void | setMtu (ssize_t mtu) |
void | setSendQueueCapacity (ssize_t sendQueueCapacity) |
void | setState (TransportState newState) |
set transport state More... | |
void | setExpirationTime (const time::steady_clock::TimePoint &expirationTime) |
virtual bool | canChangePersistencyToImpl (ndn::nfd::FacePersistency newPersistency) const |
invoked by canChangePersistencyTo to perform the check More... | |
virtual void | afterChangePersistency (ndn::nfd::FacePersistency oldPersistency) |
invoked after the persistency has been changed More... | |
Static Protected Member Functions | |
static EndpointId | makeEndpointId (const typename protocol::endpoint &ep) |
Protected Attributes | |
protocol::socket | m_socket |
protocol::endpoint | m_sender |
Protected Attributes inherited from nfd::face::TransportCounters | |
PacketCounter | nInPackets |
count of incoming packets More... | |
PacketCounter | nOutPackets |
count of outgoing packets More... | |
ByteCounter | nInBytes |
total incoming bytes More... | |
ByteCounter | nOutBytes |
total outgoing bytes More... | |
Additional Inherited Members | |
Public Attributes inherited from nfd::face::Transport | |
signal::Signal< Transport, TransportState, TransportState > | afterStateChange |
signals when transport state changes More... | |
Static Public Attributes inherited from nfd::face::Transport | |
static constexpr ssize_t | MIN_MTU = 64 |
minimum MTU that may be set on a transport More... | |
Implements Transport for datagram-based protocols.
Protocol | a datagram-based protocol in Boost.Asio |
Definition at line 46 of file datagram-transport.hpp.
typedef Protocol nfd::face::DatagramTransport< Protocol, Addressing >::protocol |
Definition at line 49 of file datagram-transport.hpp.
|
explicit |
Construct datagram transport.
socket | Protocol-specific socket for the created transport |
Definition at line 105 of file datagram-transport.hpp.
References nfd::face::DatagramTransport< Protocol, Addressing >::handleReceive(), nfd::face::DatagramTransport< Protocol, Addressing >::m_sender, nfd::face::DatagramTransport< Protocol, Addressing >::m_socket, NFD_LOG_FACE_WARN, nfd::face::QUEUE_ERROR, and nfd::face::Transport::setSendQueueCapacity().
|
overridevirtual |
QUEUE_UNSUPPORTED | transport does not support queue length retrieval |
QUEUE_ERROR | transport was unable to retrieve the queue length |
Reimplemented from nfd::face::Transport.
Definition at line 128 of file datagram-transport.hpp.
References nfd::face::getTxQueueLength(), NFD_LOG_FACE_WARN, and nfd::face::QUEUE_ERROR.
void nfd::face::DatagramTransport< T, U >::receiveDatagram | ( | const uint8_t * | buffer, |
size_t | nBytesReceived, | ||
const boost::system::error_code & | error | ||
) |
Receive datagram, translate buffer into packet, deliver to parent class.
Definition at line 173 of file datagram-transport.hpp.
References ndn::Block::fromBuffer(), NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, and ndn::Block::size().
|
overrideprotectedvirtual |
performs Transport specific operations to close the transport
This is invoked once by close()
after changing state to CLOSING. It will not be invoked by Transport class if the transport is already CLOSING or CLOSED.
When the cleanup procedure is complete, this method should change state to CLOSED. This transition can happen synchronously or asynchronously.
Implements nfd::face::Transport.
Definition at line 139 of file datagram-transport.hpp.
References nfd::face::CLOSED, nfd::getGlobalIoService(), NFD_LOG_FACE_TRACE, and nfd::detail::SimulatorIo::post().
|
overrideprotectedvirtual |
performs Transport specific operations to send a packet
packet | the packet to be sent, can be assumed to be valid and well-formed |
endpoint | the destination endpoint |
Implements nfd::face::Transport.
Definition at line 160 of file datagram-transport.hpp.
References NFD_LOG_FACE_TRACE.
|
protected |
Definition at line 214 of file datagram-transport.hpp.
References NFD_LOG_FACE_TRACE.
|
protected |
Definition at line 201 of file datagram-transport.hpp.
Referenced by nfd::face::DatagramTransport< Protocol, Addressing >::DatagramTransport().
|
protected |
Definition at line 224 of file datagram-transport.hpp.
References nfd::face::CLOSED, nfd::face::CLOSING, ndn::nfd::FACE_PERSISTENCY_PERMANENT, nfd::face::FAILED, NFD_LOG_FACE_DEBUG, NFD_LOG_FACE_ERROR, and NFD_LOG_FACE_TRACE.
|
protected |
Definition at line 248 of file datagram-transport.hpp.
|
protected |
Definition at line 255 of file datagram-transport.hpp.
|
staticprotected |
Definition at line 262 of file datagram-transport.hpp.
|
protected |
|
protected |
Definition at line 195 of file multicast-udp-transport.cpp.
|
protected |
|
protected |
Definition at line 93 of file datagram-transport.hpp.
Referenced by nfd::face::DatagramTransport< Protocol, Addressing >::DatagramTransport().
|
protected |
Definition at line 94 of file datagram-transport.hpp.
Referenced by nfd::face::DatagramTransport< Protocol, Addressing >::DatagramTransport().