Implements Transport for stream-based protocols. More...
#include <stream-transport.hpp>
Public Types | |
typedef Protocol | protocol |
Public Types inherited from nfd::face::Transport | |
typedef uint64_t | EndpointId |
identifies an endpoint on the link More... | |
typedef TransportCounters | Counters |
counters provided by Transport More... | |
Public Member Functions | |
StreamTransport (typename protocol::socket &&socket) | |
Construct stream transport. More... | |
Public Member Functions inherited from nfd::face::Transport | |
Transport () | |
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 (Packet &&packet) |
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 |
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 | deferredClose () |
void | doSend (Transport::Packet &&packet) 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) |
virtual void | handleError (const boost::system::error_code &error) |
void | resetReceiveBuffer () |
void | resetSendQueue () |
NFD_LOG_INCLASS_DECLARE () | |
Protected Member Functions inherited from nfd::face::Transport | |
void | receive (Packet &&packet) |
receive a link-layer packet 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 | 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... | |
Protected Attributes | |
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... | |
Additional Inherited Members | |
Public Attributes inherited from nfd::face::Transport | |
signal::Signal< Transport, TransportState, TransportState > | afterStateChange |
signals when transport state changes More... | |
Implements Transport for stream-based protocols.
Protocol | a stream-based protocol in Boost.Asio |
Definition at line 42 of file stream-transport.hpp.
typedef Protocol nfd::face::StreamTransport< Protocol >::protocol |
Definition at line 45 of file stream-transport.hpp.
|
explicit |
Construct stream transport.
socket | Protocol-specific socket for the created transport |
Definition at line 103 of file stream-transport.hpp.
References nfd::face::StreamTransport< Protocol >::startReceive().
|
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 112 of file stream-transport.hpp.
References nfd::face::StreamTransport< Protocol >::deferredClose(), nfd::getGlobalIoService(), nfd::face::StreamTransport< Protocol >::m_socket, NFD_LOG_FACE_TRACE, and nfd::detail::SimulatorIo::post().
Referenced by nfd::face::TcpTransport::doClose(), nfd::face::StreamTransport< Protocol >::handleError(), and nfd::face::StreamTransport< Protocol >::handleReceive().
|
protected |
Definition at line 144 of file stream-transport.hpp.
References nfd::face::CLOSED, nfd::face::StreamTransport< Protocol >::m_socket, NFD_LOG_FACE_TRACE, nfd::face::StreamTransport< Protocol >::resetSendQueue(), and nfd::face::Transport::setState().
Referenced by nfd::face::StreamTransport< Protocol >::doClose().
|
overrideprotectedvirtual |
performs Transport specific operations to send a packet
packet | the packet, which must be a well-formed TLV block |
Implements nfd::face::Transport.
Definition at line 159 of file stream-transport.hpp.
References nfd::face::Transport::getState(), NFD_LOG_FACE_TRACE, nfd::face::StreamTransport< Protocol >::sendFromQueue(), and nfd::face::UP.
|
protected |
Definition at line 175 of file stream-transport.hpp.
References nfd::face::StreamTransport< Protocol >::m_socket.
Referenced by nfd::face::StreamTransport< Protocol >::doSend(), and nfd::face::StreamTransport< Protocol >::handleSend().
|
protected |
Definition at line 185 of file stream-transport.hpp.
References NFD_LOG_FACE_TRACE, nfd::face::StreamTransport< Protocol >::processErrorCode(), and nfd::face::StreamTransport< Protocol >::sendFromQueue().
|
protected |
Definition at line 202 of file stream-transport.hpp.
References nfd::face::Transport::getState(), nfd::face::StreamTransport< Protocol >::m_socket, ndn::MAX_NDN_PACKET_SIZE, and nfd::face::UP.
Referenced by nfd::face::StreamTransport< Protocol >::handleReceive(), and nfd::face::StreamTransport< Protocol >::StreamTransport().
|
protected |
Definition at line 215 of file stream-transport.hpp.
References nfd::face::StreamTransport< Protocol >::doClose(), nfd::face::FAILED, ndn::Block::fromBuffer(), ndn::MAX_NDN_PACKET_SIZE, NFD_LOG_FACE_ERROR, NFD_LOG_FACE_TRACE, nfd::face::StreamTransport< Protocol >::processErrorCode(), nfd::face::Transport::receive(), nfd::face::Transport::setState(), ndn::Block::size(), and nfd::face::StreamTransport< Protocol >::startReceive().
|
protected |
Definition at line 260 of file stream-transport.hpp.
References nfd::face::CLOSED, nfd::face::CLOSING, nfd::face::FAILED, nfd::face::Transport::getState(), nfd::face::StreamTransport< Protocol >::handleError(), NFD_LOG_FACE_TRACE, and websocketpp::transport::error::operation_aborted.
Referenced by nfd::face::StreamTransport< Protocol >::handleReceive(), and nfd::face::StreamTransport< Protocol >::handleSend().
|
protectedvirtual |
Reimplemented in nfd::face::TcpTransport.
Definition at line 277 of file stream-transport.hpp.
References nfd::face::CLOSING, nfd::face::StreamTransport< Protocol >::doClose(), websocketpp::transport::error::eof, nfd::face::FAILED, NFD_LOG_FACE_ERROR, and nfd::face::Transport::setState().
Referenced by nfd::face::TcpTransport::handleError(), and nfd::face::StreamTransport< Protocol >::processErrorCode().
|
protected |
Definition at line 291 of file stream-transport.hpp.
|
protected |
Definition at line 298 of file stream-transport.hpp.
Referenced by nfd::face::StreamTransport< Protocol >::deferredClose().
|
protected |
|
protected |