All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Classes | Public Member Functions | List of all members
ndn::TcpTransport Class Reference

TcpTransport extends the Transport interface to implement communication over TCP. More...

#include <tcp-transport.hpp>

Inheritance diagram for ndn::TcpTransport:
ndn::Transport

Classes

class  ConnectionInfo
 A TcpTransport::ConnectionInfo extends Transport::ConnectionInfo to hold the host and port info for the TCP connection. More...
 

Public Member Functions

virtual bool isLocal (const Transport::ConnectionInfo &connectionInfo)
 Determine whether this transport connecting according to connectionInfo is to a node on the current machine; results are cached. More...
 
virtual bool isAsync ()
 Override to return false since connect does not need to use the onConnected callback. More...
 
virtual void connect (const Transport::ConnectionInfo &connectionInfo, ElementListener &elementListener, const OnConnected &onConnected)
 Connect according to the info in ConnectionInfo, and processEvents() will use elementListener. More...
 
virtual void send (const uint8_t *data, size_t dataLength)
 Send data to the host. More...
 
virtual void processEvents ()
 Process any data to receive. More...
 
virtual bool getIsConnected ()
 
virtual void close ()
 Close the connection to the host.
 
- Public Member Functions inherited from ndn::Transport
void send (const std::vector< uint8_t > &data)
 

Additional Inherited Members

- Public Types inherited from ndn::Transport
typedef func_lib::function< void()> OnConnected
 

Detailed Description

TcpTransport extends the Transport interface to implement communication over TCP.

Member Function Documentation

virtual void ndn::TcpTransport::connect ( const Transport::ConnectionInfo connectionInfo,
ElementListener elementListener,
const OnConnected &  onConnected 
)
virtual

Connect according to the info in ConnectionInfo, and processEvents() will use elementListener.

Parameters
connectionInfoA reference to a TcpTransport::ConnectionInfo.
elementListenerNot a shared_ptr because we assume that it will remain valid during the life of this object.
onConnectedThis calls onConnected() when the connection is established.

Reimplemented from ndn::Transport.

virtual bool ndn::TcpTransport::isAsync ( )
virtual

Override to return false since connect does not need to use the onConnected callback.

Returns
False.

Reimplemented from ndn::Transport.

virtual bool ndn::TcpTransport::isLocal ( const Transport::ConnectionInfo connectionInfo)
virtual

Determine whether this transport connecting according to connectionInfo is to a node on the current machine; results are cached.

According to http://redmine.named-data.net/projects/nfd/wiki/ScopeControl#local-face, TCP transports with a loopback address are local. If connectionInfo contains a host name, this will do a blocking DNS lookup; otherwise this will parse the IP address and examine the first octet to determine if it is a loopback address (e.g. the first IPv4 octet is 127 or IPv6 is "::1").

Parameters
connectionInfoA TcpTransport.ConnectionInfo with the host to check.
Returns
True if the host is local, false if not.

Reimplemented from ndn::Transport.

virtual void ndn::TcpTransport::processEvents ( )
virtual

Process any data to receive.

For each element received, call elementListener.onReceivedElement. This is non-blocking and will return immediately if there is no data to receive. You should normally not call this directly since it is called by Face.processEvents.

Exceptions
Thismay throw an exception for reading data or in the callback for processing the data. If you call this from an main event loop, you may want to catch and log/disregard all exceptions.

Implements ndn::Transport.

virtual void ndn::TcpTransport::send ( const uint8_t *  data,
size_t  dataLength 
)
virtual

Send data to the host.

Parameters
dataA pointer to the buffer of data to send.
dataLengthThe number of bytes in data.

Reimplemented from ndn::Transport.


The documentation for this class was generated from the following file: