ndn::StreamTransportImpl< BaseTransport, Protocol > Class Template Reference

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

#include <stream-transport-impl.hpp>

Inheritance diagram for ndn::StreamTransportImpl< BaseTransport, Protocol >:
[legend]
Collaboration diagram for ndn::StreamTransportImpl< BaseTransport, Protocol >:
[legend]

Public Types

typedef StreamTransportImpl< BaseTransport, Protocol > Impl
 
typedef std::list< BlockBlockSequence
 
typedef std::list< BlockSequenceTransmissionQueue
 

Public Member Functions

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

Protected Member Functions

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

Protected Attributes

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

Detailed Description

template<typename BaseTransport, typename Protocol>
class ndn::StreamTransportImpl< BaseTransport, Protocol >

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

Template Parameters
BaseTransporta subclass of Transport
Protocola Boost.Asio stream-oriented protocol, including boost::asio::ip::tcp and boost::asio::local::stream_protocol

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

Member Typedef Documentation

template<typename BaseTransport , typename Protocol >
typedef std::list<Block> ndn::StreamTransportImpl< BaseTransport, Protocol >::BlockSequence

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

template<typename BaseTransport , typename Protocol >
typedef StreamTransportImpl<BaseTransport,Protocol> ndn::StreamTransportImpl< BaseTransport, Protocol >::Impl

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

template<typename BaseTransport , typename Protocol >
typedef std::list<BlockSequence> ndn::StreamTransportImpl< BaseTransport, Protocol >::TransmissionQueue

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

Constructor & Destructor Documentation

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

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

Member Function Documentation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Field Documentation

template<typename BaseTransport , typename Protocol >
boost::asio::deadline_timer ndn::StreamTransportImpl< BaseTransport, Protocol >::m_connectTimer
protected

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

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

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

template<typename BaseTransport , typename Protocol >
size_t ndn::StreamTransportImpl< BaseTransport, Protocol >::m_inputBufferSize
protected

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

template<typename BaseTransport , typename Protocol >
bool ndn::StreamTransportImpl< BaseTransport, Protocol >::m_isConnecting
protected

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

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

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

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

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

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

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