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 | |
typedef uint64_t | EndpointId |
identifies an endpoint on the link More... | |
typedef TransportCounters | Counters |
counters provided by Transport More... | |
Public Member Functions | |
WebSocketTransport (websocketpp::connection_hdl hdl, websocket::Server &server, time::milliseconds pingInterval) | |
virtual const Counters & | getCounters () const override |
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 () | |
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 (Packet &&packet) |
send a link-layer packet More... | |
FaceUri | getLocalUri () const |
FaceUri | getRemoteUri () const |
ndn::nfd::FaceScope | getScope () const |
ndn::nfd::FacePersistency | getPersistency () const |
void | setPersistency (ndn::nfd::FacePersistency persistency) |
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 | |
virtual void | beforeChangePersistency (ndn::nfd::FacePersistency newPersistency) final |
invoked before persistency is changed More... | |
virtual void | doClose () final |
performs Transport specific operations to close the transport More... | |
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) |
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 54 of file websocket-transport.hpp.
counters provided by WebSocketTransport
Definition at line 60 of file websocket-transport.hpp.
nfd::face::WebSocketTransport::WebSocketTransport | ( | websocketpp::connection_hdl | hdl, |
websocket::Server & | server, | ||
time::milliseconds | pingInterval | ||
) |
Definition at line 51 of file websocket-transport.cpp.
References ndn::nfd::FACE_PERSISTENCY_ON_DEMAND, ndn::nfd::FACE_SCOPE_LOCAL, ndn::nfd::FACE_SCOPE_NON_LOCAL, nfd::face::isLoopback(), ndn::nfd::LINK_TYPE_POINT_TO_POINT, nfd::face::MTU_UNLIMITED, NFD_LOG_FACE_INFO, 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().
|
inlineoverridevirtual |
Reimplemented from nfd::face::Transport.
Definition at line 109 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 103 of file websocket-transport.cpp.
References ndn::Block::fromBuffer(), NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, nfd::face::WebSocketTransportCounters::nOutPings, nfd::face::Transport::receive(), and nfd::scheduler::schedule().
void nfd::face::WebSocketTransport::handlePong | ( | ) |
Definition at line 140 of file websocket-transport.cpp.
References NFD_LOG_FACE_TRACE, and nfd::face::WebSocketTransportCounters::nInPongs.
void nfd::face::WebSocketTransport::handlePongTimeout | ( | ) |
Definition at line 148 of file websocket-transport.cpp.
References nfd::face::CLOSED, nfd::face::CLOSING, doClose(), nfd::face::FAILED, nfd::face::Transport::getState(), NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, and nfd::face::Transport::setState().
|
finalprotectedvirtual |
invoked before persistency is changed
std::invalid_argument | new persistency is not supported |
std::runtime_error | transition is disallowed |
Implements nfd::face::Transport.
Definition at line 80 of file websocket-transport.cpp.
References ndn::nfd::FACE_PERSISTENCY_ON_DEMAND, and NFD_LOG_FACE_TRACE.
|
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 173 of file websocket-transport.cpp.
References nfd::scheduler::ScopedEventId::cancel(), nfd::face::CLOSED, NFD_LOG_FACE_TRACE, and nfd::face::Transport::setState().
Referenced by handlePongTimeout().