29 struct SDLNet_Socket {
34 struct _SDLNet_SocketSet {
37 struct SDLNet_Socket **sockets;
46 struct _SDLNet_SocketSet *set;
49 set = (
struct _SDLNet_SocketSet *)
malloc(
sizeof(*set));
52 set->maxsockets = maxsockets;
53 set->sockets = (
struct SDLNet_Socket **)
malloc
54 (maxsockets*
sizeof(*set->sockets));
55 if ( set->sockets !=
NULL ) {
56 for ( i=0; i<maxsockets; ++
i ) {
57 set->sockets[
i] =
NULL;
71 if ( set->numsockets == set->maxsockets ) {
75 set->sockets[set->numsockets++] = (
struct SDLNet_Socket *)sock;
77 return(set->numsockets);
86 for ( i=0; i<set->numsockets; ++
i ) {
87 if ( set->sockets[i] == (
struct SDLNet_Socket *)sock ) {
91 if ( i == set->numsockets ) {
96 for ( ; i<set->numsockets; ++
i ) {
97 set->sockets[
i] = set->sockets[i+1];
100 return(set->numsockets);
120 for ( i=set->numsockets-1; i>=0; --i ) {
121 if ( set->sockets[i]->channel > maxfd ) {
122 maxfd = set->sockets[
i]->channel;
132 for ( i=set->numsockets-1; i>=0; --i ) {
133 FD_SET(set->sockets[i]->channel, &mask);
137 tv.tv_sec = timeout/1000;
138 tv.tv_usec = (timeout%1000)*1000;
141 retval = select(maxfd+1, &mask,
NULL,
NULL, &tv);
146 for ( i=set->numsockets-1; i>=0; --i ) {
147 if ( FD_ISSET(set->sockets[i]->channel, &mask) ) {
148 set->sockets[
i]->ready = 1;
DECLSPEC void SDLCALL SDLNet_SetError(const char *fmt,...)
DECLSPEC int SDLCALL SDLNet_CheckSockets(SDLNet_SocketSet set, Uint32 timeout)
DECLSPEC int SDLCALL SDLNet_DelSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)
DECLSPEC void SDLCALL SDLNet_FreeSocketSet(SDLNet_SocketSet set)
int SDLNet_GetLastError(void)
DECLSPEC int SDLCALL SDLNet_AddSocket(SDLNet_SocketSet set, SDLNet_GenericSocket sock)
uint32_t Uint32
An unsigned 32-bit integer type.
struct _SDLNet_SocketSet * SDLNet_SocketSet
GLbitfield GLuint64 timeout
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
DECLSPEC SDLNet_SocketSet SDLCALL SDLNet_AllocSocketSet(int maxsockets)
void SDLNet_SetLastError(int err)