UDT Reference: UDT Structures

UDT Sockets Structures

The structures used in UDT API are listed in the table below:

Structures Comments

UDTSOCKET               

UDT socket descriptor

ERRORINFO

read the system errno of the exception

UDSET

set of UDT sockets

TRACEINFO

read the text description of the exception

UDT_MEM_ROUTINE    

definition of memory processing function for overlapped IO

 

UDTSOCKET

This is used as the descriptor of a UDT socket. Its internal is not exposed to application and subject to future changes.

ERRORINFO

The ERRORINFO structure contains the specific information of a UDT error. It has two helper functions to let applications know an integral error code and a piece of text information.

Functions Functionality

int getErrorCode()

read the UDT error code.

const char* getErrorMessage()

read the text error information.

UDSET

The UDSET is used with select call to access multiple UDT descriptors.

Four macros are defined on the UDSET structure to processing a UDT socket set. They are very similar to the fd_set structure and macros in traditional standard socket API.

Macros Functionality

UD_CLR(u, *set)

Removes the descriptor u from set.

UD_ISSET(u, *set)

Nonzero if u is a member of the set. Otherwise, zero.

UD_SET(u, *set)

Adds descriptor u to set.

UD_ZERO(*set)  

Initializes the set to null.            

TRACEINFO

The TRACEINFO structure stores the performance trace information. Its member attributes can be read directly by applications.

Members Comments

The following attributes are aggregate values since the UDT socket is created.

int64_t msTimeStamp

time elapsed since the UDT socket is created, in milliseconds

int64_t pktSentTotal

total number of sent packets, including retransmissions

int64_t pktRecvTotal

total number of received packets

int pktSndLossTotal

total number of lost packets, measured in the sending side

int pktRcvLossTotal

total number of lost packets, measured in the receiving side

int pktRetransTotal

total number of retransmitted packets, measured in the sending side

int pktSentACKTotal

total number of sent ACK packets

int pktRecvACKTotal

total number of received ACK packets       

int pktSentNAKTotal

total number of sent NAK packets

int pktRecvNAKTotal

total number of received NAK packets

The following attributes are local values since the last time they are recorded.

int64_t pktSent

number of sent packets, including retransmissions

int64_t pktRecv

number of received packets

int pktSndLoss

number of lost packets, measured in the sending side

int pktRcvLoss

number of lost packets, measured in the receiving side

int pktRetrans

number of retransmitted packets, measured in the sending side

int pktSentACK

number of sent ACK packets

int pktRecvACK

number of received ACK packets       

int pktSentNAK

number of sent NAK packets

int pktRecvNAK

number of received NAK packets

double mbpsSendRate

sending rate in Mbps

double mbpsRecvRate

receiving rate in Mbps

The following attributes are instant values at the time they are observed.

double usPktSndPeriod

packet sending period, in microseconds

int pktFlowWindow

flow window size, in number of packets        

int pktCongestionWindow

congestion window size, in number of packets

int pktFlightSize

number packets on the flight

double msRTT

round trip time, in milliseconds

double mbpsBandwidth

estimated bandwidth, in Mbps

int byteAvailSndBuf

available sending buffer size, in bytes

int byteAvailRcvBuf

available receiving buffer size, in bytes

UDT_MEM_ROUTINE

The UDT_MEM_ROUTINE is defined as void (UDT_MEME_ROUTINE*)(char*, int, void*) and it is used to automatically process the data buffer after an overlapped IO is completed. The first parameter is a pointer to the buffer to be processed, the second parameter is the length of the buffer, and the last parameter is a pointer to the application context.

See Also

UDT Sockets Functions