DESERT 3.6.0
Loading...
Searching...
No Matches
uwApplicationModule Class Reference

#include <uwApplication_module.h>

Inheritance diagram for uwApplicationModule:
Collaboration diagram for uwApplicationModule:

Public Member Functions

 uwApplicationModule ()
 
virtual ~uwApplicationModule ()
 
virtual int command (int argc, const char *const *argv) override
 
virtual void recv (Packet *) override
 
virtual double GetFTT () const
 
virtual double GetFTTstd () const
 
virtual double GetPER () const
 
virtual double GetTHR () const
 
virtual double GetRTT () const
 
virtual double GetRTTstd () const
 
virtual int getPktSent () const
 
virtual int getPktLost () const
 
virtual int getPktRecv () const
 
virtual int getPktsOOSequence () const
 
virtual int getPktsInvalidRx () const
 
virtual int getPktsPushQueue () const
 
virtual double getPeriod () const
 
std::string getEpoch () const
 
virtual void printOnLog (Logger::LogLevel log_level, const std::string &module, const std::string &message) const override
 

Protected Member Functions

virtual void transmit ()
 
virtual bool listenTCP ()
 
virtual void acceptTCP ()
 
virtual void readFromTCP (int clnSock)
 
virtual bool openConnectionUDP ()
 
virtual void readFromUDP ()
 
virtual void stop ()
 
virtual bool withoutSocket ()
 
virtual bool useTCP ()
 
virtual bool usePoissonTraffic ()
 
virtual bool useDropOutOfOrder ()
 
virtual void incrPktSent ()
 
virtual void incrPktLost (int npkts)
 
virtual void incrPktRecv ()
 
virtual void incrPktOoseq ()
 
virtual void incrPktInvalid ()
 
virtual void incrPktsPushQueue ()
 
virtual double getTimeBeforeNextPkt ()
 
virtual void updateRTT (double rtt)
 
virtual void updateFTT (double ftt)
 
virtual void updateThroughput (int bytes, double dt)
 

Protected Attributes

bool socket_active
 
bool socket_tcp
 
bool * sn_check
 
uint8_t dst_addr
 
int poisson_traffic
 
int payloadsize
 
int port_num
 
int drop_out_of_order
 
int uidcnt
 
int hrsn
 
int txsn
 
int rftt
 
int pkts_lost
 
int pkts_recv
 
int pkts_ooseq
 
int pkts_invalid
 
int pkts_push_queue
 
int pkts_last_reset
 
int sea_trial
 
int node_id
 
int servSockDescr
 
int clnSockDescr
 
int servPort
 
uint32_t esn
 
int rttsamples
 
int fttsamples
 
double period
 
double lrtime
 
double sumrtt
 
double sumrtt2
 
double sumftt
 
double sumftt2
 
double sumbytes
 
double sumdt
 
struct sockaddr_in servAddr
 
struct sockaddr_in clnAddr
 
std::thread socket_thread
 
std::mutex socket_mutex
 
std::atomic< bool > receiving
 
std::queue< Packet * > queuePckReadTCP
 
std::queue< Packet * > queuePckReadUDP
 
uwSendTimerApplchkTimerPeriod
 

Static Protected Attributes

static uint MAX_READ_LEN = 64
 

Friends

class uwSendTimerAppl
 

Detailed Description

Definition at line 86 of file uwApplication_module.h.

Constructor & Destructor Documentation

◆ uwApplicationModule()

uwApplicationModule::uwApplicationModule ( )

Constructor of uwApplicationModule class.

Definition at line 73 of file uwApplication_module.cpp.

◆ ~uwApplicationModule()

uwApplicationModule::~uwApplicationModule ( )
virtual

Destructor of uwApplicationModule class.

Definition at line 139 of file uwApplication_module.cpp.

Member Function Documentation

◆ acceptTCP()

void uwApplicationModule::acceptTCP ( )
protectedvirtual

Method that puts in place a listening TCP socket.

Definition at line 103 of file uwApplication_TCP_socket.cpp.

◆ command()

int uwApplicationModule::command ( int  argc,
const char *const *  argv 
)
overridevirtual

TCL command interpreter.

It implements the following OTCL methods:

Parameters
argcNumber of arguments in argv.
argvArray of strings which are the command parameters (Note that argv[0] is the name of the object).
Returns
TCL_OK or TCL_ERROR whether the command has been dispatched successfully or not.

Definition at line 145 of file uwApplication_module.cpp.

◆ getEpoch()

std::string uwApplicationModule::getEpoch ( ) const
inline

Calculate the epoch of the event.

Used in sea-trial mode.

Returns
the epoch of the system.

Definition at line 239 of file uwApplication_module.h.

◆ GetFTT()

double uwApplicationModule::GetFTT ( ) const
virtual

Definition at line 505 of file uwApplication_module.cpp.

◆ GetFTTstd()

double uwApplicationModule::GetFTTstd ( ) const
virtual

Return the standard deviation of the Forward Trip Time calculated.

Returns
the standard deviation of the Forward Trip Time calculated

Definition at line 511 of file uwApplication_module.cpp.

◆ GetPER()

double uwApplicationModule::GetPER ( ) const
virtual

Rerturn the Packet Error Rate calculated.

Returns
the Packet Error Rate calculated

Definition at line 524 of file uwApplication_module.cpp.

◆ getPeriod()

virtual double uwApplicationModule::getPeriod ( ) const
inlinevirtual

Return period generation time.

Returns
period

Definition at line 229 of file uwApplication_module.h.

◆ getPktLost()

virtual int uwApplicationModule::getPktLost ( ) const
inlinevirtual

return the number of DATA packets lost by the server

Returns
pkts_lost

Definition at line 174 of file uwApplication_module.h.

◆ getPktRecv()

virtual int uwApplicationModule::getPktRecv ( ) const
inlinevirtual

return the number of DATA packet correctly received by the server

Returns
pkts_recv

Definition at line 185 of file uwApplication_module.h.

◆ getPktSent()

virtual int uwApplicationModule::getPktSent ( ) const
inlinevirtual

return the number of packets sent by the server

Returns
txsn

Definition at line 163 of file uwApplication_module.h.

◆ getPktsInvalidRx()

virtual int uwApplicationModule::getPktsInvalidRx ( ) const
inlinevirtual

return the number of DATA packets received with error by the server

Returns
pkts_invalid

Definition at line 207 of file uwApplication_module.h.

◆ getPktsOOSequence()

virtual int uwApplicationModule::getPktsOOSequence ( ) const
inlinevirtual

return the number of DATA packets received out of order by the server

Returns
pkts_ooseq

Definition at line 196 of file uwApplication_module.h.

◆ getPktsPushQueue()

virtual int uwApplicationModule::getPktsPushQueue ( ) const
inlinevirtual

Return the number of DATA packets sorted in the server queue.

Returns
pkts_push_queue

Definition at line 218 of file uwApplication_module.h.

◆ GetRTT()

double uwApplicationModule::GetRTT ( ) const
virtual

Returns the average Round Trip Time.

Returns
the average Round Trip Time

Definition at line 479 of file uwApplication_module.cpp.

◆ GetRTTstd()

double uwApplicationModule::GetRTTstd ( ) const
virtual

Return the standard deviation of the Round Trip Time calculated.

Returns
the standard deviation of the Round Trip Time calculated

Definition at line 485 of file uwApplication_module.cpp.

◆ GetTHR()

double uwApplicationModule::GetTHR ( ) const
virtual

Return the Throughput calculated [bps].

Returns
Throughput [bps]

Definition at line 537 of file uwApplication_module.cpp.

◆ getTimeBeforeNextPkt()

double uwApplicationModule::getTimeBeforeNextPkt ( )
protectedvirtual

Compute the DATA generation rate, that can be constant and equal to the period established by the user, or can occur with a Poisson process (only without socket).

Returns
generation period for DATA packets

Definition at line 466 of file uwApplication_module.cpp.

◆ incrPktInvalid()

virtual void uwApplicationModule::incrPktInvalid ( )
inlineprotectedvirtual

Increse the number of DATA packets received with error by the server.

Definition at line 416 of file uwApplication_module.h.

◆ incrPktLost()

virtual void uwApplicationModule::incrPktLost ( int  npkts)
inlineprotectedvirtual

Increase the number of DATA packets lost by the server.

Definition at line 391 of file uwApplication_module.h.

◆ incrPktOoseq()

virtual void uwApplicationModule::incrPktOoseq ( )
inlineprotectedvirtual

Increase the number of DATA packets received out of order by the server.

Definition at line 408 of file uwApplication_module.h.

◆ incrPktRecv()

virtual void uwApplicationModule::incrPktRecv ( )
inlineprotectedvirtual

Increase the number of DATA packet correctly received by the server.

Definition at line 400 of file uwApplication_module.h.

◆ incrPktSent()

virtual void uwApplicationModule::incrPktSent ( )
inlineprotectedvirtual

Increase the sequence number and so the number of packets sent by the server.

Definition at line 382 of file uwApplication_module.h.

◆ incrPktsPushQueue()

virtual void uwApplicationModule::incrPktsPushQueue ( )
inlineprotectedvirtual

Increase the number of DATA packets stored in the Server queue.

This DATA packets will be sent to the below levels of ISO/OSI stack protocol.

Definition at line 426 of file uwApplication_module.h.

◆ listenTCP()

bool uwApplicationModule::listenTCP ( )
protectedvirtual

Method that binds the listening TCP socket.

Returns
true if the listening socket is bind and open.

Definition at line 43 of file uwApplication_TCP_socket.cpp.

◆ openConnectionUDP()

bool uwApplicationModule::openConnectionUDP ( )
protectedvirtual

When socket communication is used, this method establish a connection between client and server.

This is required because a UDP protocol is used.

Returns
true if the socket is bind.

Definition at line 43 of file uwApplication_UDP_socket.cpp.

◆ printOnLog()

virtual void uwApplicationModule::printOnLog ( Logger::LogLevel  log_level,
const std::string &  module,
const std::string &  message 
) const
inlineoverridevirtual

Method to send the log message to the logger.

If sea_trial enabled add epoch of the event to the message and use node_id passed via tcl.

Parameters
log_levelLogLevel representing the amout of logs.
moduleString name of the plugin/module.
messageString log message.

Definition at line 261 of file uwApplication_module.h.

◆ readFromTCP()

void uwApplicationModule::readFromTCP ( int  clnSock)
protectedvirtual

Method that reads a TCP byte stream from external application and converts it to a Packet.

Parameters
clnSockint client file descriptor.

Definition at line 130 of file uwApplication_TCP_socket.cpp.

◆ readFromUDP()

void uwApplicationModule::readFromUDP ( )
protectedvirtual

Method that waits for UDP packets from external application and converts it to a Packet.

Definition at line 89 of file uwApplication_UDP_socket.cpp.

◆ recv()

void uwApplicationModule::recv ( Packet *  p)
overridevirtual

Performs the reception of packets from upper and lower layers.

Parameters
Packet*Pointer to the packet will be received.

Definition at line 246 of file uwApplication_module.cpp.

◆ stop()

void uwApplicationModule::stop ( )
protectedvirtual

Close the socket connection in the case the communication take place with socket, otherwise stop the execution of the process, so force the cancellation of period time generation.

Definition at line 440 of file uwApplication_module.cpp.

◆ transmit()

void uwApplicationModule::transmit ( )
protectedvirtual

Set all the field of the DATA packet that must be send down after the creation to the below level.

In this case the payload of DATA packet are generated in a random way.

Definition at line 352 of file uwApplication_module.cpp.

◆ updateFTT()

void uwApplicationModule::updateFTT ( double  ftt)
protectedvirtual

Returns the average Forward Trip Time.

Returns
the average Forward Trip Time Update the FTT after the reception of a new packet
Parameters
FTTof the current packet received

Definition at line 543 of file uwApplication_module.cpp.

◆ updateRTT()

void uwApplicationModule::updateRTT ( double  rtt)
protectedvirtual

Update the RTT after the reception of a new packet.

Parameters
RTTof the current packet received

Definition at line 497 of file uwApplication_module.cpp.

◆ updateThroughput()

void uwApplicationModule::updateThroughput ( int  bytes,
double  dt 
)
protectedvirtual

Update the Throughput after the reception of a new packet.

Parameters
Throughputof the current packet received

Definition at line 551 of file uwApplication_module.cpp.

◆ useDropOutOfOrder()

virtual bool uwApplicationModule::useDropOutOfOrder ( )
inlineprotectedvirtual

If the communication take place without sockets verify if the data packets received by the server is out of order or not.

In the first case discard the data packet.

Returns
true if enable drop out of order false otherwise.

Definition at line 372 of file uwApplication_module.h.

◆ usePoissonTraffic()

virtual bool uwApplicationModule::usePoissonTraffic ( )
inlineprotectedvirtual

If the communication take place without sockets verify if the data generation period is constant or a poisson random process.

Returns
true if use a Poisson process false if use a constant period data generation

Definition at line 359 of file uwApplication_module.h.

◆ useTCP()

virtual bool uwApplicationModule::useTCP ( )
inlineprotectedvirtual

Check if the socket protocol is TCP or UDP.

Returns
true if socket uses TCP protocol false if uses UDP.

Definition at line 346 of file uwApplication_module.h.

◆ withoutSocket()

virtual bool uwApplicationModule::withoutSocket ( )
inlineprotectedvirtual

Check if the communication take place without socket.

Returns
true if communication without socket false otherwise.

Definition at line 335 of file uwApplication_module.h.

Friends And Related Symbol Documentation

◆ uwSendTimerAppl

friend class uwSendTimerAppl
friend

Definition at line 88 of file uwApplication_module.h.

Member Data Documentation

◆ chkTimerPeriod

uwSendTimerAppl* uwApplicationModule::chkTimerPeriod
protected

Timer that schedule the period between successive generation of DATA packets.

Definition at line 527 of file uwApplication_module.h.

◆ clnAddr

struct sockaddr_in uwApplicationModule::clnAddr
protected

Client address.

Definition at line 516 of file uwApplication_module.h.

◆ clnSockDescr

int uwApplicationModule::clnSockDescr
protected

Socket descriptor for client.

Definition at line 501 of file uwApplication_module.h.

◆ drop_out_of_order

int uwApplicationModule::drop_out_of_order
protected

Ordering of data packet received 1 enabled 0 not enabled.

Definition at line 478 of file uwApplication_module.h.

◆ dst_addr

uint8_t uwApplicationModule::dst_addr
protected

Destination IP address.

Definition at line 473 of file uwApplication_module.h.

◆ esn

uint32_t uwApplicationModule::esn
protected

Expected serial number.

Definition at line 503 of file uwApplication_module.h.

◆ fttsamples

int uwApplicationModule::fttsamples
protected

Number of FTT samples.

Definition at line 505 of file uwApplication_module.h.

◆ hrsn

int uwApplicationModule::hrsn
protected

Highest received sequence number.

Definition at line 482 of file uwApplication_module.h.

◆ lrtime

double uwApplicationModule::lrtime
protected

Time of last packet reception.

Definition at line 507 of file uwApplication_module.h.

◆ MAX_READ_LEN

uint uwApplicationModule::MAX_READ_LEN = 64
staticprotected

Maximum size (bytes) of a single read of the socket.

Definition at line 530 of file uwApplication_module.h.

◆ node_id

int uwApplicationModule::node_id
protected

Node id to be print in log output.

Definition at line 499 of file uwApplication_module.h.

◆ payloadsize

int uwApplicationModule::payloadsize
protected

Size of each data packet payaload generated.

Definition at line 476 of file uwApplication_module.h.

◆ period

double uwApplicationModule::period
protected

Time between successive generation data packets.

Definition at line 506 of file uwApplication_module.h.

◆ pkts_invalid

int uwApplicationModule::pkts_invalid
protected

Counter of the packets received with errors by the server.

Definition at line 490 of file uwApplication_module.h.

◆ pkts_last_reset

int uwApplicationModule::pkts_last_reset
protected

Used for error checking after stats are reset.

Set to pkts_lost+pkts_recv each time resetStats is called.

Definition at line 495 of file uwApplication_module.h.

◆ pkts_lost

int uwApplicationModule::pkts_lost
protected

Counter of the packet lost during the transmission.

Definition at line 485 of file uwApplication_module.h.

◆ pkts_ooseq

int uwApplicationModule::pkts_ooseq
protected

Counter of the packets received out of order by the server.

Definition at line 488 of file uwApplication_module.h.

◆ pkts_push_queue

int uwApplicationModule::pkts_push_queue
protected

Counter of DATA packets received by server and not yet passed to the below levels of ISO/OSI stack protocol.

Definition at line 492 of file uwApplication_module.h.

◆ pkts_recv

int uwApplicationModule::pkts_recv
protected

Counter of the packets correctly received by the server.

Definition at line 486 of file uwApplication_module.h.

◆ poisson_traffic

int uwApplicationModule::poisson_traffic
protected

Poisson process for generation of data packets 1 enabled 0 not enabled.

Definition at line 474 of file uwApplication_module.h.

◆ port_num

int uwApplicationModule::port_num
protected

Destination port number.

Definition at line 477 of file uwApplication_module.h.

◆ queuePckReadTCP

std::queue<Packet *> uwApplicationModule::queuePckReadTCP
protected

Atomic boolean variable that controls the socket rx looping thread.

Queue that store the DATA packets recevied from the client by the server using a TCP protocol.

Definition at line 521 of file uwApplication_module.h.

◆ queuePckReadUDP

std::queue<Packet *> uwApplicationModule::queuePckReadUDP
protected

Queue that store the DATA packets recevied from the client by the server using a UDP protocol.

Definition at line 524 of file uwApplication_module.h.

◆ receiving

std::atomic<bool> uwApplicationModule::receiving
protected

Definition at line 519 of file uwApplication_module.h.

◆ rftt

int uwApplicationModule::rftt
protected

Forward round trip time.

Definition at line 484 of file uwApplication_module.h.

◆ rttsamples

int uwApplicationModule::rttsamples
protected

Number of RTT samples.

Definition at line 504 of file uwApplication_module.h.

◆ sea_trial

int uwApplicationModule::sea_trial
protected

Set to 1 to enable epoch time in log output.

Definition at line 498 of file uwApplication_module.h.

◆ servAddr

struct sockaddr_in uwApplicationModule::servAddr
protected

Server address.

Definition at line 515 of file uwApplication_module.h.

◆ servPort

int uwApplicationModule::servPort
protected

Socket server port.

Definition at line 502 of file uwApplication_module.h.

◆ servSockDescr

int uwApplicationModule::servSockDescr
protected

Socket descriptor for server.

Definition at line 500 of file uwApplication_module.h.

◆ sn_check

bool* uwApplicationModule::sn_check
protected

Flag set to true if the external application is connected via a TCP socket, false if UDP.

Used to keep track of the packets already received.

Definition at line 472 of file uwApplication_module.h.

◆ socket_active

bool uwApplicationModule::socket_active
protected

Definition at line 468 of file uwApplication_module.h.

◆ socket_mutex

std::mutex uwApplicationModule::socket_mutex
protected

Mutex associated with the socket rx thread.

Definition at line 518 of file uwApplication_module.h.

◆ socket_tcp

bool uwApplicationModule::socket_tcp
protected

Flag set to true if packets are received from external application.

Definition at line 470 of file uwApplication_module.h.

◆ socket_thread

std::thread uwApplicationModule::socket_thread
protected

Object with the socket rx thread.

Definition at line 517 of file uwApplication_module.h.

◆ sumbytes

double uwApplicationModule::sumbytes
protected

Sum of bytes received.

Definition at line 512 of file uwApplication_module.h.

◆ sumdt

double uwApplicationModule::sumdt
protected

Sum of the delays.

Definition at line 513 of file uwApplication_module.h.

◆ sumftt

double uwApplicationModule::sumftt
protected

Sum of FTT samples.

Definition at line 510 of file uwApplication_module.h.

◆ sumftt2

double uwApplicationModule::sumftt2
protected

Sum of (FTT^2).

Definition at line 511 of file uwApplication_module.h.

◆ sumrtt

double uwApplicationModule::sumrtt
protected

Sum of RTT samples.

Definition at line 508 of file uwApplication_module.h.

◆ sumrtt2

double uwApplicationModule::sumrtt2
protected

Sum of (RTT^2).

Definition at line 509 of file uwApplication_module.h.

◆ txsn

int uwApplicationModule::txsn
protected

Transmission sequence number of DATA packet.

Definition at line 483 of file uwApplication_module.h.

◆ uidcnt

int uwApplicationModule::uidcnt
protected

Identifier counter that identify uniquely the DATA packet generated.

Definition at line 480 of file uwApplication_module.h.


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