ndn::Transport Class Referenceabstract

Provides TLV-block delivery service. More...

#include <ndn-cxx/transport/transport.hpp>

+ Inheritance diagram for ndn::Transport:
+ Collaboration diagram for ndn::Transport:

Classes

class  Error
 

Public Types

using ErrorCallback = std::function< void()>
 
using ReceiveCallback = std::function< void(const Block &wire)>
 

Public Member Functions

virtual ~Transport ()=default
 
virtual void close ()=0
 Close the connection. More...
 
virtual void connect (boost::asio::io_service &ioService, ReceiveCallback receiveCallback)
 Asynchronously open the connection. More...
 
bool isConnected () const noexcept
 
bool isReceiving () const noexcept
 
virtual void pause ()=0
 pause the transport More...
 
virtual void resume ()=0
 resume the transport More...
 
virtual void send (const Block &wire)=0
 send a TLV block through the transport More...
 
virtual void send (const Block &header, const Block &payload)=0
 send two memory blocks through the transport More...
 

Protected Attributes

boost::asio::io_service * m_ioService = nullptr
 
bool m_isConnected = false
 
bool m_isReceiving = false
 
ReceiveCallback m_receiveCallback
 

Detailed Description

Provides TLV-block delivery service.

Definition at line 35 of file transport.hpp.

Member Typedef Documentation

◆ ErrorCallback

using ndn::Transport::ErrorCallback = std::function<void()>

Definition at line 47 of file transport.hpp.

◆ ReceiveCallback

using ndn::Transport::ReceiveCallback = std::function<void(const Block& wire)>

Definition at line 46 of file transport.hpp.

Constructor & Destructor Documentation

◆ ~Transport()

virtual ndn::Transport::~Transport ( )
virtualdefault

Member Function Documentation

◆ close()

virtual void ndn::Transport::close ( )
pure virtual

Close the connection.

Implemented in ndn::TcpTransport, and ndn::UnixTransport.

◆ connect()

void ndn::Transport::connect ( boost::asio::io_service &  ioService,
ReceiveCallback  receiveCallback 
)
virtual

Asynchronously open the connection.

Parameters
ioServiceio_service to create socket on
receiveCallbackcallback function when a TLV block is received; must not be empty
Exceptions
boost::system::system_errorconnection cannot be established

Reimplemented in ndn::TcpTransport, and ndn::UnixTransport.

Definition at line 32 of file transport.cpp.

◆ isConnected()

bool ndn::Transport::isConnected ( ) const
inlinenoexcept
Return values
trueconnection has been established
falseconnection is not yet established or has been closed

Definition at line 98 of file transport.hpp.

◆ isReceiving()

bool ndn::Transport::isReceiving ( ) const
inlinenoexcept
Return values
trueincoming packets are expected, the receive callback will be invoked
falseincoming packets are not expected, the receive callback will not be invoked

Definition at line 107 of file transport.hpp.

◆ pause()

virtual void ndn::Transport::pause ( )
pure virtual

pause the transport

Postcondition
the receive callback will not be invoked
Note
This operation has no effect if transport has been paused, or when connection is being established.

Implemented in ndn::TcpTransport, and ndn::UnixTransport.

◆ resume()

virtual void ndn::Transport::resume ( )
pure virtual

resume the transport

Postcondition
the receive callback will be invoked
Note
This operation has no effect if transport is not paused, or when connection is being established.

Implemented in ndn::TcpTransport, and ndn::UnixTransport.

◆ send() [1/2]

virtual void ndn::Transport::send ( const Block wire)
pure virtual

send a TLV block through the transport

Implemented in ndn::TcpTransport, and ndn::UnixTransport.

◆ send() [2/2]

virtual void ndn::Transport::send ( const Block header,
const Block payload 
)
pure virtual

send two memory blocks through the transport

Scatter/gather API is utilized to send two non-consecutive memory blocks together (as part of the same message in datagram-oriented transports).

Implemented in ndn::TcpTransport, and ndn::UnixTransport.

Member Data Documentation

◆ m_ioService

boost::asio::io_service* ndn::Transport::m_ioService = nullptr
protected

Definition at line 113 of file transport.hpp.

◆ m_isConnected

bool ndn::Transport::m_isConnected = false
protected

Definition at line 115 of file transport.hpp.

◆ m_isReceiving

bool ndn::Transport::m_isReceiving = false
protected

Definition at line 116 of file transport.hpp.

◆ m_receiveCallback

ReceiveCallback ndn::Transport::m_receiveCallback
protected

Definition at line 114 of file transport.hpp.