A Transport that communicates on a connected TCP socket. More...
#include <tcp-transport.hpp>
Public Member Functions | |
TcpTransport (protocol::socket &&socket, ndn::nfd::FacePersistency persistency, ndn::nfd::FaceScope faceScope) | |
ssize_t | getSendQueueLength () final |
Public Member Functions inherited from nfd::face::StreamTransport< boost::asio::ip::tcp > | |
StreamTransport (typename protocol::socket &&socket) | |
Construct stream transport. More... | |
ssize_t | getSendQueueLength () override |
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 | |
bool | canChangePersistencyToImpl (ndn::nfd::FacePersistency newPersistency) const final |
invoked by canChangePersistencyTo to perform the check More... | |
void | afterChangePersistency (ndn::nfd::FacePersistency oldPersistency) final |
invoked after the persistency has been changed More... | |
void | doClose () final |
performs Transport specific operations to close the transport More... | |
void | handleError (const boost::system::error_code &error) final |
Protected Member Functions inherited from nfd::face::StreamTransport< boost::asio::ip::tcp > | |
void | doClose () override |
performs Transport specific operations to close the transport More... | |
void | deferredClose () |
void | doSend (const Block &packet, const EndpointId &endpoint) override |
performs Transport specific operations to send a packet More... | |
void | sendFromQueue () |
void | handleSend (const boost::system::error_code &error, size_t nBytesSent) |
void | startReceive () |
void | handleReceive (const boost::system::error_code &error, size_t nBytesReceived) |
void | processErrorCode (const boost::system::error_code &error) |
void | resetReceiveBuffer () |
void | resetSendQueue () |
size_t | getSendQueueBytes () const |
NFD_LOG_MEMBER_DECL () | |
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) |
Additional Inherited Members | |
Public Types inherited from nfd::face::StreamTransport< boost::asio::ip::tcp > | |
typedef boost::asio::ip::tcp | protocol |
Public Types inherited from nfd::face::Transport | |
using | Counters = TransportCounters |
Counters provided by a transport. More... | |
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... | |
Protected Attributes inherited from nfd::face::StreamTransport< boost::asio::ip::tcp > | |
protocol::socket | m_socket |
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... | |
A Transport that communicates on a connected TCP socket.
When persistency is set to permanent, whenever the TCP connection is severed, the transport state is set to DOWN, and the connection is retried periodically with exponential backoff until it is reestablished
Definition at line 43 of file tcp-transport.hpp.
nfd::face::TcpTransport::TcpTransport | ( | protocol::socket && | socket, |
ndn::nfd::FacePersistency | persistency, | ||
ndn::nfd::FaceScope | faceScope | ||
) |
Definition at line 43 of file tcp-transport.cpp.
References ndn::nfd::LINK_TYPE_POINT_TO_POINT, nfd::face::StreamTransport< boost::asio::ip::tcp >::m_socket, nfd::face::MTU_UNLIMITED, NFD_LOG_FACE_DEBUG, nfd::face::Transport::setLinkType(), nfd::face::Transport::setLocalUri(), nfd::face::Transport::setMtu(), nfd::face::Transport::setPersistency(), nfd::face::Transport::setRemoteUri(), and nfd::face::Transport::setScope().
|
finalvirtual |
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 61 of file tcp-transport.cpp.
References nfd::face::StreamTransport< boost::asio::ip::tcp >::getSendQueueBytes(), nfd::face::StreamTransport< boost::asio::ip::tcp >::m_socket, NFD_LOG_FACE_TRACE, and NFD_LOG_FACE_WARN.
|
finalprotectedvirtual |
invoked by canChangePersistencyTo to perform the check
Base class implementation returns false.
newPersistency | the new persistency, guaranteed to be different from current persistency |
Reimplemented from nfd::face::Transport.
Definition at line 83 of file tcp-transport.cpp.
|
finalprotectedvirtual |
invoked after the persistency has been changed
The base class implementation does nothing. When overridden in a subclass, the function should update internal states after persistency setting has been changed.
Reimplemented from nfd::face::Transport.
Definition at line 89 of file tcp-transport.cpp.
References doClose(), nfd::face::DOWN, ndn::nfd::FACE_PERSISTENCY_PERMANENT, nfd::face::FAILED, nfd::face::Transport::getState(), and nfd::face::Transport::setState().
|
finalprotectedvirtual |
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 193 of file tcp-transport.cpp.
References ndn::detail::ScopedCancelHandle< HandleT >::cancel(), and nfd::face::StreamTransport< Protocol >::doClose().
Referenced by afterChangePersistency().
|
finalprotectedvirtual |
Reimplemented from nfd::face::StreamTransport< boost::asio::ip::tcp >.
Definition at line 102 of file tcp-transport.cpp.
References nfd::face::DOWN, ndn::nfd::FACE_PERSISTENCY_PERMANENT, nfd::getGlobalIoService(), nfd::face::Transport::getPersistency(), nfd::face::StreamTransport< Protocol >::handleError(), nfd::face::StreamTransport< boost::asio::ip::tcp >::m_socket, NFD_LOG_FACE_TRACE, nfd::detail::SimulatorIo::post(), and nfd::face::Transport::setState().