Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
tcpip::Socket Class Reference

#include <socket.h>

Public Member Functions

Socketaccept (const bool create=false)
 Wait for a incoming connection to port_.
 
void close ()
 
void connect ()
 Connects to host_:port_.
 
bool has_client_connection () const
 
bool is_blocking ()
 
int port ()
 
std::vector< unsigned char > receive (int bufSize=2048)
 Receive up to bufSize available bytes from Socket::socket_.
 
bool receiveExact (Storage &)
 Receive a complete TraCI message from Socket::socket_.
 
void send (const std::vector< unsigned char > &buffer)
 
void sendExact (const Storage &)
 
void set_blocking (bool)
 
void set_verbose (bool newVerbose)
 
 Socket (int port)
 Constructor that prepare for accepting a connection on given port.
 
 Socket (std::string host, int port)
 Constructor that prepare to connect to host:port.
 
bool verbose ()
 
 ~Socket ()
 Destructor.
 

Static Public Member Functions

static int getFreeSocketPort ()
 Returns an free port on the system.
 

Protected Member Functions

void printBufferOnVerbose (const std::vector< unsigned char > buffer, const std::string &label) const
 Print label and buffer to stderr if Socket::verbose_ is set.
 
void receiveComplete (unsigned char *const buffer, std::size_t len) const
 Receive len bytes from Socket::socket_.
 
size_t recvAndCheck (unsigned char *const buffer, std::size_t len) const
 Receive up to len available bytes from Socket::socket_.
 

Static Protected Attributes

static const int lengthLen = 4
 Length of the message length part of a TraCI message.
 

Private Member Functions

bool datawaiting (int sock) const
 
void init ()
 

Static Private Member Functions

static void BailOnSocketError (std::string context)
 

Private Attributes

bool blocking_
 
std::string host_
 
int port_
 
int server_socket_
 
int socket_
 
bool verbose_
 

Friends

class Response
 

Detailed Description

Definition at line 60 of file socket.h.

Constructor & Destructor Documentation

◆ Socket() [1/2]

tcpip::Socket::Socket ( std::string  host,
int  port 
)

Constructor that prepare to connect to host:port.

Definition at line 72 of file socket.cpp.

References init().

◆ Socket() [2/2]

tcpip::Socket::Socket ( int  port)

Constructor that prepare for accepting a connection on given port.

Definition at line 85 of file socket.cpp.

References init().

◆ ~Socket()

tcpip::Socket::~Socket ( )

Destructor.

Definition at line 147 of file socket.cpp.

References close(), server_socket_, and socket_.

Member Function Documentation

◆ accept()

Socket * tcpip::Socket::accept ( const bool  create = false)

Wait for a incoming connection to port_.

Definition at line 233 of file socket.cpp.

References accept(), BailOnSocketError(), blocking_, port_, server_socket_, set_blocking(), and socket_.

Referenced by accept(), and TraCIServer::TraCIServer().

Here is the caller graph for this function:

◆ BailOnSocketError()

void tcpip::Socket::BailOnSocketError ( std::string  context)
staticprivate

Definition at line 177 of file socket.cpp.

Referenced by accept(), connect(), datawaiting(), getFreeSocketPort(), init(), recvAndCheck(), send(), and set_blocking().

Here is the caller graph for this function:

◆ close()

void tcpip::Socket::close ( )

Definition at line 364 of file socket.cpp.

References close(), and socket_.

Referenced by close(), libtraci::Connection::close(), TraCIAPI::closeSocket(), connect(), libtraci::Connection::Connection(), getFreeSocketPort(), OutputDevice_Network::postWriteHook(), OutputDevice_Network::~OutputDevice_Network(), and ~Socket().

Here is the caller graph for this function:

◆ connect()

void tcpip::Socket::connect ( )

Connects to host_:port_.

Definition at line 331 of file socket.cpp.

References BailOnSocketError(), close(), connect(), host_, port_, and socket_.

Referenced by connect(), TraCIAPI::connect(), libtraci::Connection::Connection(), OutputDevice_Network::OutputDevice_Network(), and receive().

Here is the caller graph for this function:

◆ datawaiting()

bool tcpip::Socket::datawaiting ( int  sock) const
private

Definition at line 205 of file socket.cpp.

References BailOnSocketError().

Referenced by receive().

Here is the caller graph for this function:

◆ getFreeSocketPort()

int tcpip::Socket::getFreeSocketPort ( )
static

Returns an free port on the system.

Note
This is done by binding a socket with port=0, getting the assigned port, and closing the socket again

Definition at line 117 of file socket.cpp.

References BailOnSocketError(), close(), and port().

◆ has_client_connection()

bool tcpip::Socket::has_client_connection ( ) const

Definition at line 541 of file socket.cpp.

References socket_.

Referenced by libtraci::Connection::close(), libtraci::Connection::createCommand(), OutputDevice_Network::postWriteHook(), and libtraci::Connection::subscribe().

Here is the caller graph for this function:

◆ init()

void tcpip::Socket::init ( )
private

Definition at line 99 of file socket.cpp.

References BailOnSocketError().

Referenced by Socket(), and Socket().

Here is the caller graph for this function:

◆ is_blocking()

bool tcpip::Socket::is_blocking ( )

Definition at line 550 of file socket.cpp.

References blocking_.

◆ port()

int tcpip::Socket::port ( )

Definition at line 191 of file socket.cpp.

References port_.

Referenced by getFreeSocketPort().

Here is the caller graph for this function:

◆ printBufferOnVerbose()

void tcpip::Socket::printBufferOnVerbose ( const std::vector< unsigned char >  buffer,
const std::string &  label 
) const
protected

Print label and buffer to stderr if Socket::verbose_ is set.

Definition at line 466 of file socket.cpp.

References verbose_.

Referenced by receive(), receiveExact(), and send().

Here is the caller graph for this function:

◆ receive()

std::vector< unsigned char > tcpip::Socket::receive ( int  bufSize = 2048)

Receive up to bufSize available bytes from Socket::socket_.

Definition at line 484 of file socket.cpp.

References connect(), datawaiting(), printBufferOnVerbose(), recvAndCheck(), and socket_.

◆ receiveComplete()

void tcpip::Socket::receiveComplete ( unsigned char *const  buffer,
std::size_t  len 
) const
protected

Receive len bytes from Socket::socket_.

Definition at line 451 of file socket.cpp.

References recvAndCheck().

Referenced by receiveExact().

Here is the caller graph for this function:

◆ receiveExact()

bool tcpip::Socket::receiveExact ( Storage msg)

Receive a complete TraCI message from Socket::socket_.

Definition at line 509 of file socket.cpp.

References lengthLen, printBufferOnVerbose(), tcpip::Storage::readInt(), receiveComplete(), tcpip::Storage::reset(), and tcpip::Storage::writePacket().

Referenced by libtraci::Connection::check_resultState(), and TraCIAPI::check_resultState().

Here is the caller graph for this function:

◆ recvAndCheck()

size_t tcpip::Socket::recvAndCheck ( unsigned char *const  buffer,
std::size_t  len 
) const
protected

Receive up to len available bytes from Socket::socket_.

Definition at line 431 of file socket.cpp.

References BailOnSocketError(), and socket_.

Referenced by receive(), and receiveComplete().

Here is the caller graph for this function:

◆ send()

void tcpip::Socket::send ( const std::vector< unsigned char > &  buffer)

Definition at line 382 of file socket.cpp.

References BailOnSocketError(), printBufferOnVerbose(), send(), and socket_.

Referenced by OutputDevice_Network::postWriteHook(), send(), and sendExact().

Here is the caller graph for this function:

◆ sendExact()

◆ set_blocking()

void tcpip::Socket::set_blocking ( bool  blocking)

Definition at line 304 of file socket.cpp.

References BailOnSocketError(), blocking_, and server_socket_.

Referenced by accept().

Here is the caller graph for this function:

◆ set_verbose()

void tcpip::Socket::set_verbose ( bool  newVerbose)
inline

Definition at line 97 of file socket.h.

References verbose_.

◆ verbose()

bool tcpip::Socket::verbose ( )
inline

Definition at line 96 of file socket.h.

References verbose_.

Friends And Related Symbol Documentation

◆ Response

friend class Response
friend

Definition at line 62 of file socket.h.

Field Documentation

◆ blocking_

bool tcpip::Socket::blocking_
private

Definition at line 122 of file socket.h.

Referenced by accept(), is_blocking(), and set_blocking().

◆ host_

std::string tcpip::Socket::host_
private

Definition at line 118 of file socket.h.

Referenced by connect().

◆ lengthLen

const int tcpip::Socket::lengthLen = 4
staticprotected

Length of the message length part of a TraCI message.

Definition at line 101 of file socket.h.

Referenced by receiveExact(), and sendExact().

◆ port_

int tcpip::Socket::port_
private

Definition at line 119 of file socket.h.

Referenced by accept(), connect(), and port().

◆ server_socket_

int tcpip::Socket::server_socket_
private

Definition at line 121 of file socket.h.

Referenced by accept(), set_blocking(), and ~Socket().

◆ socket_

int tcpip::Socket::socket_
private

Definition at line 120 of file socket.h.

Referenced by accept(), close(), connect(), has_client_connection(), receive(), recvAndCheck(), send(), and ~Socket().

◆ verbose_

bool tcpip::Socket::verbose_
private

Definition at line 124 of file socket.h.

Referenced by printBufferOnVerbose(), set_verbose(), and verbose().


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