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) | |
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 () | |
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 |
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 () 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) |
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 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 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_INFO, 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(), and nfd::face::Transport::setScope().
|
inlinefinalvirtual |
Reimplemented from nfd::face::Transport.
Definition at line 106 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 94 of file websocket-transport.cpp.
References ndn::Block::fromBuffer(), NFD_LOG_FACE_TRACE, NFD_LOG_FACE_WARN, nfd::face::WebSocketTransportCounters::nOutPings, websocketpp::endpoint< connection, config >::ping(), nfd::face::Transport::receive(), and nfd::scheduler::schedule().
void nfd::face::WebSocketTransport::handlePong | ( | ) |
Definition at line 131 of file websocket-transport.cpp.
References NFD_LOG_FACE_TRACE, and nfd::face::WebSocketTransportCounters::nInPongs.
void nfd::face::WebSocketTransport::handlePongTimeout | ( | ) |
Definition at line 139 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 163 of file websocket-transport.cpp.
References nfd::scheduler::ScopedEventId::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().