ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol > Class Template Reference

implementation detail of a Boost.Asio-based stream-oriented transport with resolver support More...

#include <ndn-cxx/transport/detail/stream-transport-with-resolver-impl.hpp>

+ Inheritance diagram for ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >:
+ Collaboration diagram for ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >:

Public Types

using BlockSequence = std::list< Block >
 
using TransmissionQueue = std::list< BlockSequence >
 

Public Member Functions

 StreamTransportWithResolverImpl (BaseTransport &transport, boost::asio::io_service &ioService)
 
void close ()
 
void connect (const typename Protocol::resolver::query &query)
 
void connect (const typename Protocol::endpoint &endpoint)
 
void pause ()
 
void resume ()
 
void send (const Block &wire)
 
void send (const Block &header, const Block &payload)
 

Protected Member Functions

void asyncReceive ()
 
void asyncWrite ()
 
void connectHandler (const boost::system::error_code &error)
 
void connectTimeoutHandler (const boost::system::error_code &error)
 
void handleAsyncReceive (const boost::system::error_code &error, std::size_t nBytesRecvd)
 
void handleAsyncWrite (const boost::system::error_code &error, TransmissionQueue::iterator queueItem)
 
bool processAllReceived (uint8_t *buffer, size_t &offset, size_t nBytesAvailable)
 
void resolveHandler (const boost::system::error_code &error, typename Protocol::resolver::iterator endpoint, const shared_ptr< typename Protocol::resolver > &)
 
void send (BlockSequence &&sequence)
 

Protected Attributes

boost::asio::steady_timer m_connectTimer
 
uint8_t m_inputBuffer [MAX_NDN_PACKET_SIZE]
 
size_t m_inputBufferSize = 0
 
bool m_isConnecting = false
 
Protocol::socket m_socket
 
TransmissionQueue m_transmissionQueue
 
BaseTransport & m_transport
 

Detailed Description

template<typename BaseTransport, typename Protocol>
class ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >

implementation detail of a Boost.Asio-based stream-oriented transport with resolver support

Definition at line 34 of file stream-transport-with-resolver-impl.hpp.

Member Typedef Documentation

◆ BlockSequence

template<typename BaseTransport , typename Protocol >
using ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::BlockSequence = std::list<Block>
inherited

Definition at line 45 of file stream-transport-impl.hpp.

◆ TransmissionQueue

template<typename BaseTransport , typename Protocol >
using ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::TransmissionQueue = std::list<BlockSequence>
inherited

Definition at line 46 of file stream-transport-impl.hpp.

Constructor & Destructor Documentation

◆ StreamTransportWithResolverImpl()

template<typename BaseTransport , typename Protocol >
ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >::StreamTransportWithResolverImpl ( BaseTransport &  transport,
boost::asio::io_service &  ioService 
)
inline

Definition at line 37 of file stream-transport-with-resolver-impl.hpp.

Member Function Documentation

◆ asyncReceive()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::asyncReceive ( )
inlineprotectedinherited

Definition at line 210 of file stream-transport-impl.hpp.

◆ asyncWrite()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::asyncWrite ( )
inlineprotectedinherited

Definition at line 178 of file stream-transport-impl.hpp.

◆ close()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::close ( )
inlineinherited

Definition at line 77 of file stream-transport-impl.hpp.

◆ connect() [1/2]

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >::connect ( const typename Protocol::resolver::query &  query)
inline
Todo:
Decide whether this number should be configurable

Definition at line 43 of file stream-transport-with-resolver-impl.hpp.

◆ connect() [2/2]

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::connect ( const typename Protocol::endpoint &  endpoint)
inlineinherited
Todo:
Decide whether this number should be configurable

Definition at line 56 of file stream-transport-impl.hpp.

◆ connectHandler()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::connectHandler ( const boost::system::error_code &  error)
inlineprotectedinherited

Definition at line 135 of file stream-transport-impl.hpp.

◆ connectTimeoutHandler()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::connectTimeoutHandler ( const boost::system::error_code &  error)
inlineprotectedinherited

Definition at line 155 of file stream-transport-impl.hpp.

◆ handleAsyncReceive()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::handleAsyncReceive ( const boost::system::error_code &  error,
std::size_t  nBytesRecvd 
)
inlineprotectedinherited

Definition at line 218 of file stream-transport-impl.hpp.

◆ handleAsyncWrite()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::handleAsyncWrite ( const boost::system::error_code &  error,
TransmissionQueue::iterator  queueItem 
)
inlineprotectedinherited

Definition at line 187 of file stream-transport-impl.hpp.

◆ pause()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::pause ( )
inlineinherited

Definition at line 92 of file stream-transport-impl.hpp.

◆ processAllReceived()

template<typename BaseTransport , typename Protocol >
bool ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::processAllReceived ( uint8_t *  buffer,
size_t &  offset,
size_t  nBytesAvailable 
)
inlineprotectedinherited

Definition at line 253 of file stream-transport-impl.hpp.

◆ resolveHandler()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportWithResolverImpl< BaseTransport, Protocol >::resolveHandler ( const boost::system::error_code &  error,
typename Protocol::resolver::iterator  endpoint,
const shared_ptr< typename Protocol::resolver > &   
)
inlineprotected

Definition at line 71 of file stream-transport-with-resolver-impl.hpp.

◆ resume()

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::resume ( )
inlineinherited

Definition at line 104 of file stream-transport-impl.hpp.

◆ send() [1/3]

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::send ( const Block wire)
inlineinherited

Definition at line 117 of file stream-transport-impl.hpp.

◆ send() [2/3]

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::send ( const Block header,
const Block payload 
)
inlineinherited

Definition at line 125 of file stream-transport-impl.hpp.

◆ send() [3/3]

template<typename BaseTransport , typename Protocol >
void ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::send ( BlockSequence &&  sequence)
inlineprotectedinherited

Definition at line 165 of file stream-transport-impl.hpp.

Member Data Documentation

◆ m_connectTimer

template<typename BaseTransport , typename Protocol >
boost::asio::steady_timer ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_connectTimer
protectedinherited

Definition at line 276 of file stream-transport-impl.hpp.

◆ m_inputBuffer

template<typename BaseTransport , typename Protocol >
uint8_t ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_inputBuffer[MAX_NDN_PACKET_SIZE]
protectedinherited

Definition at line 272 of file stream-transport-impl.hpp.

◆ m_inputBufferSize

template<typename BaseTransport , typename Protocol >
size_t ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_inputBufferSize = 0
protectedinherited

Definition at line 273 of file stream-transport-impl.hpp.

◆ m_isConnecting

template<typename BaseTransport , typename Protocol >
bool ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_isConnecting = false
protectedinherited

Definition at line 277 of file stream-transport-impl.hpp.

◆ m_socket

template<typename BaseTransport , typename Protocol >
Protocol::socket ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_socket
protectedinherited

Definition at line 271 of file stream-transport-impl.hpp.

◆ m_transmissionQueue

template<typename BaseTransport , typename Protocol >
TransmissionQueue ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_transmissionQueue
protectedinherited

Definition at line 275 of file stream-transport-impl.hpp.

◆ m_transport

template<typename BaseTransport , typename Protocol >
BaseTransport& ndn::detail::StreamTransportImpl< BaseTransport, Protocol >::m_transport
protectedinherited

Definition at line 269 of file stream-transport-impl.hpp.