#ifndef __UDT_BASE_H__
#define __UDT_BASE_H__
#ifndef WIN32
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#else
#ifdef __MINGW__
#include <stdint.h>
#include <ws2tcpip.h>
#endif
#include <windows.h>
#endif
#ifdef WIN32
#ifndef __MINGW__
typedef __int32 int32_t;
typedef __int64 int64_t;
typedef unsigned __int32 uint32_t;
#ifndef LEGACY_WIN32
typedef unsigned __int64 uint64_t;
#else
typedef __int64 uint64_t;
#endif
#ifdef UDT_EXPORTS
#define UDT_API __declspec(dllexport)
#else
#define UDT_API __declspec(dllimport)
#endif
#else
#define UDT_API
#endif
#else
#define UDT_API
#endif
#define NO_BUSY_WAITING
#ifdef WIN32
#ifndef __MINGW__
typedef SOCKET SYSSOCKET;
#else
typedef int SYSSOCKET;
#endif
#else
typedef int SYSSOCKET;
#endif
typedef SYSSOCKET UDPSOCKET;
typedef int UDTSOCKET;
enum EPOLLOpt
{
UDT_EPOLL_IN = 0x1,
UDT_EPOLL_OUT = 0x4,
UDT_EPOLL_ERR = 0x8
};
enum UDTSTATUS {INIT = 1, OPENED, LISTENING, CONNECTING, CONNECTED, BROKEN, CLOSING, CLOSED, NONEXIST};
enum UDTOpt
{
UDT_MSS, UDT_SNDSYN, UDT_RCVSYN, UDT_CC, UDT_FC, UDT_SNDBUF, UDT_RCVBUF, UDT_LINGER, UDP_SNDBUF, UDP_RCVBUF, UDT_MAXMSG, UDT_MSGTTL, UDT_RENDEZVOUS, UDT_SNDTIMEO, UDT_RCVTIMEO, UDT_REUSEADDR, UDT_MAXBW, UDT_STATE, UDT_EVENT, UDT_SNDDATA, UDT_RCVDATA };
struct CPerfMon
{
int64_t msTimeStamp; int64_t pktSentTotal; int64_t pktRecvTotal; int pktSndLossTotal; int pktRcvLossTotal; int pktRetransTotal; int pktSentACKTotal; int pktRecvACKTotal; int pktSentNAKTotal; int pktRecvNAKTotal; int64_t usSndDurationTotal;
int64_t pktSent; int64_t pktRecv; int pktSndLoss; int pktRcvLoss; int pktRetrans; int pktSentACK; int pktRecvACK; int pktSentNAK; int pktRecvNAK; double mbpsSendRate; double mbpsRecvRate; int64_t usSndDuration;
double usPktSndPeriod; int pktFlowWindow; int pktCongestionWindow; int pktFlightSize; double msRTT; double mbpsBandwidth; int byteAvailSndBuf; int byteAvailRcvBuf; };
typedef enum UDTOpt SOCKOPT;
typedef struct CPerfMon TRACEINFO;
UDT_API extern const UDTSOCKET INVALID_SOCK;
#undef ERROR
UDT_API extern const int ERROR;
#endif