A Transport that communicates on a WebSocket connection. More...
#include <websocket-transport.hpp>
Public Types | |
typedef WebSocketTransportCounters | Counters |
counters provided by WebSocketTransport More... | |
Public Types inherited from nfd::face::Transport | |
using | Counters = TransportCounters |
Counters provided by a transport. More... | |
Public Member Functions | |
WebSocketTransport (websocketpp::connection_hdl hdl, websocket::Server &server, time::milliseconds pingInterval) | |
const Counters & | getCounters () const final |
void | receiveMessage (const std::string &msg) |
Translates a message into a Block and delivers it to the link service. More... | |
void | handlePong () |
void | handlePongTimeout () |
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 () |
void | close () |
Request the transport to be closed. More... | |
void | send (const Block &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 |
ssize_t | getSendQueueCapacity () const |
TransportState | getState () const |
time::steady_clock::TimePoint | getExpirationTime () const |
virtual ssize_t | getSendQueueLength () |
Protected Member Functions | |
void | doClose () final |
performs Transport specific operations to close the transport More... | |
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... | |
Additional Inherited Members | |
Public Attributes inherited from nfd::face::Transport | |
signal::Signal< Transport, TransportState, TransportState > | afterStateChange |
signals when transport state changes More... | |
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... | |
Protected Attributes inherited from nfd::face::WebSocketTransportCounters | |
PacketCounter | nOutPings |
count of outgoing Pings More... | |
PacketCounter | nInPongs |
count of incoming Pongs More... | |
A Transport that communicates on a WebSocket connection.
Definition at line 53 of file websocket-transport.hpp.
counters provided by WebSocketTransport
Definition at line 59 of file websocket-transport.hpp.
nfd::face::WebSocketTransport::WebSocketTransport | ( | websocketpp::connection_hdl | hdl, |
websocket::Server & | server, | ||
time::milliseconds | pingInterval | ||
) |
Definition at line 52 of file websocket-transport.cpp.
References websocketpp::frame::opcode::binary, ndn::nfd::FACE_PERSISTENCY_ON_DEMAND, ndn::nfd::FACE_SCOPE_LOCAL, ndn::nfd::FACE_SCOPE_NON_LOCAL, websocketpp::endpoint< connection, config >::get_con_from_hdl(), nfd::face::isLoopback(), ndn::nfd::LINK_TYPE_POINT_TO_POINT, nfd::face::MTU_UNLIMITED, NFD_LOG_FACE_DEBUG, NFD_LOG_FACE_TRACE, websocketpp::endpoint< connection, config >::send(), nfd::face::Transport::setLinkType(), nfd::face::Transport::setLocalUri(), nfd::face::Transport::setMtu(), nfd::face::Transport::setPersistency(), nfd::face::Transport::setRemoteUri(), nfd::face::Transport::setScope(), ndn::Block::size(), and ndn::Block::wire().
|
inlinefinalvirtual |
Reimplemented from nfd::face::Transport.
Definition at line 105 of file websocket-transport.hpp.
void nfd::face::WebSocketTransport::receiveMessage | ( | const std::string & | msg | ) |
Translates a message into a Block and delivers it to the link service.
Definition at line 95 of file websocket-transport.cpp.
References ndn::Block::fromBuffer(), nfd::getScheduler(), NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, nfd::face::WebSocketTransportCounters::nOutPings, websocketpp::endpoint< connection, config >::ping(), and nfd::face::Transport::receive().
void nfd::face::WebSocketTransport::handlePong | ( | ) |
Definition at line 132 of file websocket-transport.cpp.
References NFD_LOG_FACE_TRACE, and nfd::face::WebSocketTransportCounters::nInPongs.
void nfd::face::WebSocketTransport::handlePongTimeout | ( | ) |
Definition at line 140 of file websocket-transport.cpp.
References nfd::face::CLOSED, nfd::face::CLOSING, doClose(), nfd::face::FAILED, nfd::face::Transport::getState(), NFD_LOG_FACE_ERROR, NFD_LOG_FACE_TRACE, 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 164 of file websocket-transport.cpp.
References ndn::detail::ScopedCancelHandle< HandleT >::cancel(), websocketpp::endpoint< connection, config >::close(), nfd::face::CLOSED, NFD_LOG_FACE_TRACE, websocketpp::close::status::normal, and nfd::face::Transport::setState().
Referenced by handlePongTimeout().