ndn::TcpTransport Class Reference

a transport using TCP socket More...

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

+ Inheritance diagram for ndn::TcpTransport:
+ Collaboration diagram for ndn::TcpTransport:

Public Types

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

Public Member Functions

 TcpTransport (const std::string &host, const std::string &port="6363")
 
 ~TcpTransport () override
 
void close () override
 Close the connection. More...
 
void connect (boost::asio::io_service &ioService, ReceiveCallback receiveCallback) override
 Asynchronously open the connection. More...
 
bool isConnected () const noexcept
 
bool isReceiving () const noexcept
 
void pause () override
 pause the transport More...
 
void resume () override
 resume the transport More...
 
void send (const Block &wire) override
 send a TLV block through the transport More...
 
void send (const Block &header, const Block &payload) override
 send two memory blocks through the transport More...
 

Static Public Member Functions

static shared_ptr< TcpTransportcreate (const std::string &uri)
 Create transport with parameters defined in URI. More...
 

Protected Attributes

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

Friends

class detail::StreamTransportImpl< TcpTransport, boost::asio::ip::tcp >
 

Detailed Description

a transport using TCP socket

Definition at line 44 of file tcp-transport.hpp.

Member Typedef Documentation

◆ ErrorCallback

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

Definition at line 47 of file transport.hpp.

◆ ReceiveCallback

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

Definition at line 46 of file transport.hpp.

Constructor & Destructor Documentation

◆ TcpTransport()

ndn::TcpTransport::TcpTransport ( const std::string &  host,
const std::string &  port = "6363" 
)
explicit

Definition at line 32 of file tcp-transport.cpp.

◆ ~TcpTransport()

ndn::TcpTransport::~TcpTransport ( )
overridedefault

Member Function Documentation

◆ close()

void ndn::TcpTransport::close ( )
overridevirtual

Close the connection.

Implements ndn::Transport.

Definition at line 109 of file tcp-transport.cpp.

◆ connect()

void ndn::TcpTransport::connect ( boost::asio::io_service &  ioService,
ReceiveCallback  receiveCallback 
)
overridevirtual

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 from ndn::Transport.

Definition at line 81 of file tcp-transport.cpp.

◆ create()

shared_ptr< TcpTransport > ndn::TcpTransport::create ( const std::string &  uri)
static

Create transport with parameters defined in URI.

Exceptions
Transport::Errorincorrect URI or unsupported protocol is specified

Definition at line 41 of file tcp-transport.cpp.

◆ isConnected()

bool ndn::Transport::isConnected ( ) const
inlinenoexceptinherited
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
inlinenoexceptinherited
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()

void ndn::TcpTransport::pause ( )
overridevirtual

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.

Implements ndn::Transport.

Definition at line 118 of file tcp-transport.cpp.

◆ resume()

void ndn::TcpTransport::resume ( )
overridevirtual

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.

Implements ndn::Transport.

Definition at line 127 of file tcp-transport.cpp.

◆ send() [1/2]

void ndn::TcpTransport::send ( const Block wire)
overridevirtual

send a TLV block through the transport

Implements ndn::Transport.

Definition at line 95 of file tcp-transport.cpp.

◆ send() [2/2]

void ndn::TcpTransport::send ( const Block header,
const Block payload 
)
overridevirtual

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).

Implements ndn::Transport.

Definition at line 102 of file tcp-transport.cpp.

Friends And Related Function Documentation

◆ detail::StreamTransportImpl< TcpTransport, boost::asio::ip::tcp >

friend class detail::StreamTransportImpl< TcpTransport, boost::asio::ip::tcp >
friend

Definition at line 85 of file tcp-transport.hpp.

Member Data Documentation

◆ m_ioService

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

Definition at line 113 of file transport.hpp.

◆ m_isConnected

bool ndn::Transport::m_isConnected = false
protectedinherited

Definition at line 115 of file transport.hpp.

◆ m_isReceiving

bool ndn::Transport::m_isReceiving = false
protectedinherited

Definition at line 116 of file transport.hpp.

◆ m_receiveCallback

ReceiveCallback ndn::Transport::m_receiveCallback
protectedinherited

Definition at line 114 of file transport.hpp.