Public Types | Public Member Functions | Private Member Functions | Private Attributes
ros::TransportUDP Class Reference

UDPROS transport. More...

#include <transport_udp.h>

Inheritance diagram for ros::TransportUDP:
Inheritance graph
[legend]

List of all members.

Public Types

enum  Flags { SYNCHRONOUS = 1<<0 }

Public Member Functions

virtual void close ()
 Close this transport. Once this call has returned, writing on this transport should always return an error.
bool connect (const std::string &host, int port, int conn_id)
 Connect to a remote host.
bool createIncoming (int port, bool is_server)
 Start a server socket and listen on a port.
TransportUDPPtr createOutgoing (std::string host, int port, int conn_id, int max_datagram_size)
 Create a connection to a server socket.
virtual void disableRead ()
 Disable reading on this transport. Allows derived classes to, for example, disable read polling for asynchronous sockets.
virtual void disableWrite ()
 Disable writing on this transport. Allows derived classes to, for example, disable write polling for asynchronous sockets.
virtual void enableRead ()
 Enable reading on this transport. Allows derived classes to, for example, enable read polling for asynchronous sockets.
virtual void enableWrite ()
 Enable writing on this transport. Allows derived classes to, for example, enable write polling for asynchronous sockets.
std::string getClientURI ()
 Returns the URI of the remote host.
int getMaxDatagramSize () const
int getServerPort () const
 Returns the port this transport is listening on.
virtual std::string getTransportInfo ()
 Returns a string description of both the type of transport and who the transport is connected to.
virtual const char * getType ()
 Return a string that details the type of transport (Eg. TCPROS)
virtual int32_t read (uint8_t *buffer, uint32_t size)
 Read a number of bytes into the supplied buffer. Not guaranteed to actually read that number of bytes.
virtual bool requiresHeader ()
 Returns a boolean to indicate if the transport mechanism is reliable or not.
 TransportUDP (PollSet *poll_set, int flags=0, int max_datagram_size=0)
virtual int32_t write (uint8_t *buffer, uint32_t size)
 Write a number of bytes from the supplied buffer. Not guaranteed to actually write that number of bytes.
virtual ~TransportUDP ()

Private Member Functions

bool initializeSocket ()
 Initializes the assigned socket -- sets it to non-blocking and enables reading.
bool setSocket (int sock)
 Set the socket to be used by this transport.
void socketUpdate (int events)

Private Attributes

std::string cached_remote_host_
boost::mutex close_mutex_
bool closed_
uint32_t connection_id_
uint8_t current_message_id_
uint8_t * data_buffer_
uint32_t data_filled_
uint8_t * data_start_
bool expecting_read_
bool expecting_write_
int flags_
bool is_server_
uint16_t last_block_
sockaddr_in local_address_
int local_port_
uint32_t max_datagram_size_
PollSetpoll_set_
uint8_t * reorder_buffer_
uint32_t reorder_bytes_
TransportUDPHeader reorder_header_
uint8_t * reorder_start_
sockaddr_in server_address_
int server_port_
socket_fd_t sock_
uint16_t total_blocks_

Detailed Description

UDPROS transport.

Definition at line 67 of file transport_udp.h.


Member Enumeration Documentation

Enumerator:
SYNCHRONOUS 

Definition at line 70 of file transport_udp.h.


Constructor & Destructor Documentation

ros::TransportUDP::TransportUDP ( PollSet poll_set,
int  flags = 0,
int  max_datagram_size = 0 
)

Definition at line 56 of file transport_udp.cpp.

Definition at line 84 of file transport_udp.cpp.


Member Function Documentation

void ros::TransportUDP::close ( ) [virtual]

Close this transport. Once this call has returned, writing on this transport should always return an error.

Implements ros::Transport.

Definition at line 299 of file transport_udp.cpp.

bool ros::TransportUDP::connect ( const std::string &  host,
int  port,
int  conn_id 
)

Connect to a remote host.

Parameters:
hostThe hostname/IP to connect to
portThe port to connect to
Returns:
Whether or not the connection was successful

Definition at line 143 of file transport_udp.cpp.

bool ros::TransportUDP::createIncoming ( int  port,
bool  is_server 
)

Start a server socket and listen on a port.

Parameters:
portThe port to listen on

Definition at line 234 of file transport_udp.cpp.

TransportUDPPtr ros::TransportUDP::createOutgoing ( std::string  host,
int  port,
int  conn_id,
int  max_datagram_size 
)

Create a connection to a server socket.

Definition at line 686 of file transport_udp.cpp.

void ros::TransportUDP::disableRead ( ) [virtual]

Disable reading on this transport. Allows derived classes to, for example, disable read polling for asynchronous sockets.

Implements ros::Transport.

Definition at line 630 of file transport_udp.cpp.

void ros::TransportUDP::disableWrite ( ) [virtual]

Disable writing on this transport. Allows derived classes to, for example, disable write polling for asynchronous sockets.

Implements ros::Transport.

Definition at line 668 of file transport_udp.cpp.

void ros::TransportUDP::enableRead ( ) [virtual]

Enable reading on this transport. Allows derived classes to, for example, enable read polling for asynchronous sockets.

Implements ros::Transport.

Definition at line 612 of file transport_udp.cpp.

void ros::TransportUDP::enableWrite ( ) [virtual]

Enable writing on this transport. Allows derived classes to, for example, enable write polling for asynchronous sockets.

Implements ros::Transport.

Definition at line 650 of file transport_udp.cpp.

Returns the URI of the remote host.

Definition at line 700 of file transport_udp.cpp.

int ros::TransportUDP::getMaxDatagramSize ( ) const [inline]

Definition at line 122 of file transport_udp.h.

int ros::TransportUDP::getServerPort ( ) const [inline]

Returns the port this transport is listening on.

Definition at line 103 of file transport_udp.h.

std::string ros::TransportUDP::getTransportInfo ( ) [virtual]

Returns a string description of both the type of transport and who the transport is connected to.

Implements ros::Transport.

Definition at line 136 of file transport_udp.cpp.

virtual const char* ros::TransportUDP::getType ( ) [inline, virtual]

Return a string that details the type of transport (Eg. TCPROS)

Returns:
The stringified transport type

Implements ros::Transport.

Definition at line 120 of file transport_udp.h.

Initializes the assigned socket -- sets it to non-blocking and enables reading.

Definition at line 272 of file transport_udp.cpp.

int32_t ros::TransportUDP::read ( uint8_t *  buffer,
uint32_t  size 
) [virtual]

Read a number of bytes into the supplied buffer. Not guaranteed to actually read that number of bytes.

Parameters:
bufferBuffer to read from
sizeSize, in bytes, to read
Returns:
The number of bytes actually read, or -1 if there was an error

Implements ros::Transport.

Definition at line 343 of file transport_udp.cpp.

virtual bool ros::TransportUDP::requiresHeader ( ) [inline, virtual]

Returns a boolean to indicate if the transport mechanism is reliable or not.

Reimplemented from ros::Transport.

Definition at line 118 of file transport_udp.h.

bool ros::TransportUDP::setSocket ( int  sock) [private]

Set the socket to be used by this transport.

Parameters:
sockA valid UDP socket
Returns:
Whether setting the socket was successful

Definition at line 91 of file transport_udp.cpp.

void ros::TransportUDP::socketUpdate ( int  events) [private]

Definition at line 97 of file transport_udp.cpp.

int32_t ros::TransportUDP::write ( uint8_t *  buffer,
uint32_t  size 
) [virtual]

Write a number of bytes from the supplied buffer. Not guaranteed to actually write that number of bytes.

Parameters:
bufferBuffer to write from
sizeSize, in bytes, to write
Returns:
The number of bytes actually written, or -1 if there was an error

Implements ros::Transport.

Definition at line 522 of file transport_udp.cpp.


Member Data Documentation

Definition at line 152 of file transport_udp.h.

boost::mutex ros::TransportUDP::close_mutex_ [private]

Definition at line 141 of file transport_udp.h.

Definition at line 140 of file transport_udp.h.

Definition at line 157 of file transport_udp.h.

Definition at line 158 of file transport_udp.h.

uint8_t* ros::TransportUDP::data_buffer_ [private]

Definition at line 164 of file transport_udp.h.

uint32_t ros::TransportUDP::data_filled_ [private]

Definition at line 166 of file transport_udp.h.

uint8_t* ros::TransportUDP::data_start_ [private]

Definition at line 165 of file transport_udp.h.

Definition at line 143 of file transport_udp.h.

Definition at line 144 of file transport_udp.h.

Definition at line 155 of file transport_udp.h.

Definition at line 146 of file transport_udp.h.

uint16_t ros::TransportUDP::last_block_ [private]

Definition at line 160 of file transport_udp.h.

sockaddr_in ros::TransportUDP::local_address_ [private]

Definition at line 148 of file transport_udp.h.

Definition at line 150 of file transport_udp.h.

Definition at line 162 of file transport_udp.h.

Definition at line 154 of file transport_udp.h.

Definition at line 168 of file transport_udp.h.

Definition at line 171 of file transport_udp.h.

Definition at line 170 of file transport_udp.h.

Definition at line 169 of file transport_udp.h.

sockaddr_in ros::TransportUDP::server_address_ [private]

Definition at line 147 of file transport_udp.h.

Definition at line 149 of file transport_udp.h.

socket_fd_t ros::TransportUDP::sock_ [private]

Definition at line 139 of file transport_udp.h.

Definition at line 159 of file transport_udp.h.


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


roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim
autogenerated on Tue Mar 7 2017 04:01:04