35 float TcpTransport::s_reconnectWaitMultiplier = 2.0f;
39 , m_remoteEndpoint(m_socket.remote_endpoint())
40 , m_nextReconnectWait(s_initialReconnectWait)
45 if (
m_socket.local_endpoint().address().is_loopback() &&
46 m_socket.remote_endpoint().address().is_loopback())
85 boost::system::error_code error;
97 TcpTransport::reconnect()
117 [
this] { handleReconnectTimeout(); });
118 m_socket.async_connect(m_remoteEndpoint,
119 [
this] (
const boost::system::error_code& error) { handleReconnect(error); });
123 TcpTransport::handleReconnect(
const boost::system::error_code& error)
138 m_reconnectEvent.
cancel();
139 m_nextReconnectWait = s_initialReconnectWait;
148 TcpTransport::handleReconnectTimeout()
151 boost::system::error_code error;
155 m_nextReconnectWait =
156 std::min(time::duration_cast<time::milliseconds>(m_nextReconnectWait * s_reconnectWaitMultiplier),
166 m_reconnectEvent.
cancel();
void afterChangePersistency(ndn::nfd::FacePersistency oldPersistency) final
invoked after the persistency has been changed
void setPersistency(ndn::nfd::FacePersistency newPersistency)
changes face persistency setting
void doClose() override
performs Transport specific operations to close the transport
void cancel()
cancels the event manually
void doClose() final
performs Transport specific operations to close the transport
TcpTransport(protocol::socket &&socket, ndn::nfd::FacePersistency persistency)
#define NFD_LOG_FACE_TRACE(msg)
Log a message at TRACE level.
#define NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE(cls, specialization, name)
const ssize_t MTU_UNLIMITED
indicates the transport has no limit on payload size
void setRemoteUri(const FaceUri &uri)
virtual void handleError(const boost::system::error_code &error)
boost::posix_time::time_duration milliseconds(long duration)
detail::SimulatorIo & getGlobalIoService()
boost::asio::ip::tcp protocol
void setLinkType(ndn::nfd::LinkType linkType)
Implements Transport for stream-based protocols.
protocol::socket m_socket
the transport is being closed due to a failure
void setScope(ndn::nfd::FaceScope scope)
#define NFD_LOG_FACE_INFO(msg)
Log a message at INFO level.
Copyright (c) 2011-2015 Regents of the University of California.
the transport is closed, and can be safely deallocated
void post(const std::function< void()> &callback)
void setLocalUri(const FaceUri &uri)
void handleError(const boost::system::error_code &error) final
the transport is being closed gracefully, either by the peer or by a call to close() ...
represents the underlying protocol and address used by a Face
void resetReceiveBuffer()
bool canChangePersistencyToImpl(ndn::nfd::FacePersistency newPersistency) const final
invoked by canChangePersistencyTo to perform the check
EventId schedule(time::nanoseconds after, const EventCallback &event)
schedule an event
TransportState getState() const
void setState(TransportState newState)
set transport state
Catch-all error for socket component errors that don't fit in other categories.
the transport is up and can transmit packets
the transport is temporarily down, and is being recovered
ndn::nfd::FacePersistency getPersistency() const