UDT Reference: Structures

### UDT Socket Structures

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

Structures | Comments
UDTSOCKET | UDT socket descriptor
ERRORINFO | Description of UDT system errors
UDSET | Set of UDT sockets
TRACEINFO | UDT performance statistics and protocol parameters

##### 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 | Comments
int getErrorCode() | read the UDT error code
const char* getErrorMessage() | read the text information about the error.
void clear() | clear the error information (set to SUCCESS).

##### UDSET

The UDSET structure 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 | Comments
UD_CLR(u, *set) | remove socket u from set.
UD_ISSET(u, *set) | check if u is in set.
UD_SET(u, *set) | add u into the set.
UD_ZERO(*set) | initialize set to empty.

##### 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 pktSent | number of sent packets, including retransmissions
int64 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

##### See Also

UDT Socket Structures