#ifndef __UDT_WRAP_H__
#define __UDT_WRAP_H__
typedef CUDTException ERRORINFO;
typedef UDTOpt SOCKOPT;
typedef CPerfMon TRACEINFO;
typedef ud_set UDSET;
extern "C" int udt_startup();
extern "C" int udt_cleanup();
extern "C" UDTSOCKET udt_socket(int af, int type, int protocol);
extern "C" int udt_bind(UDTSOCKET u, const struct sockaddr* name, int namelen);
extern "C" int udt_bind2(UDTSOCKET u, UDPSOCKET udpsock);
extern "C" int udt_listen(UDTSOCKET u, int backlog);
extern "C" UDTSOCKET udt_accept(UDTSOCKET u, struct sockaddr* addr, int* addrlen);
extern "C" int udt_connect(UDTSOCKET u, const struct sockaddr* name, int namelen);
extern "C" int udt_close(UDTSOCKET u);
extern "C" int udt_getpeername(UDTSOCKET u, struct sockaddr* name, int* namelen);
extern "C" int udt_getsockname(UDTSOCKET u, struct sockaddr* name, int* namelen);
extern "C" int udt_getsockopt(UDTSOCKET u, int level, SOCKOPT optname, void* optval, int* optlen);
extern "C" int udt_setsockopt(UDTSOCKET u, int level, SOCKOPT optname, const void* optval, int optlen);
extern "C" int udt_send(UDTSOCKET u, const char* buf, int len, int flags);
extern "C" int udt_recv(UDTSOCKET u, char* buf, int len, int flags);
extern "C" int udt_sendmsg(UDTSOCKET u, const char* buf, int len, int ttl, int inorder);
extern "C" int udt_recvmsg(UDTSOCKET u, char* buf, int len);
extern "C" int64_t udt_sendfile2(UDTSOCKET u, const char* path, int64_t* offset, int64_t size, int block);
extern "C" int64_t udt_recvfile2(UDTSOCKET u, const char* path, int64_t* offset, int64_t size, int block);
extern "C" int udt_epoll_create();
extern "C" int udt_epoll_add_usock(int eid, UDTSOCKET u, const int* events);
extern "C" int udt_epoll_add_ssock(int eid, SYSSOCKET s, const int* events);
extern "C" int udt_epoll_remove_usock(int eid, UDTSOCKET u);
extern "C" int udt_epoll_remove_ssock(int eid, SYSSOCKET s);
extern "C" int udt_epoll_wait2(int eid, UDTSOCKET* readfds, int* rnum, UDTSOCKET* writefds, int* wnum, int64_t msTimeOut,
SYSSOCKET* lrfds, int* lrnum, SYSSOCKET* lwfds, int* lwnum);
extern "C" int udt_epoll_release(int eid);
extern "C" int udt_getlasterror_code();
extern "C" const char* udt_getlasterror_desc();
extern "C" int udt_perfmon(UDTSOCKET u, TRACEINFO* perf, int clear);
extern "C" enum UDTSTATUS udt_getsockstate(UDTSOCKET u);
#endif