author | Medo <smaxein@googlemail.com> |
Thu, 31 May 2012 18:32:01 +0200 | |
changeset 7158 | a0573014ff4f |
permissions | -rw-r--r-- |
7158
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
1 |
/* |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
2 |
* nonblocksockets.h |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
3 |
* |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
4 |
* Created on: 31.05.2012 |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
5 |
* Author: simmax |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
6 |
*/ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
7 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
8 |
#ifndef NONBLOCKSOCKETS_H_ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
9 |
#define NONBLOCKSOCKETS_H_ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
10 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
11 |
#include <SDL_net.h> |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
12 |
#include <stdbool.h> |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
13 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
14 |
typedef struct { |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
15 |
TCPsocket sock; |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
16 |
SDLNet_SocketSet sockset; |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
17 |
} _NonBlockSocket; |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
18 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
19 |
typedef _NonBlockSocket *NonBlockSocket; |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
20 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
21 |
/** |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
22 |
* Close the indicated socket, free its memory and set it to NULL. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
23 |
* If the socket is already NULL, nothing happens. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
24 |
*/ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
25 |
void flib_nbsocket_close(NonBlockSocket *socket); |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
26 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
27 |
/** |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
28 |
* Try to accept a connection from a listening socket. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
29 |
* if localOnly is true, this will only accept connections which came from 127.0.0.1 |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
30 |
* Returns NULL if nothing can be accepted. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
31 |
*/ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
32 |
NonBlockSocket flib_nbsocket_accept(TCPsocket listensocket, bool localOnly); |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
33 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
34 |
/** |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
35 |
* Attempt to receive up to maxlen bytes from the socket, but does not |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
36 |
* block if nothing is available. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
37 |
* Returns the ammount of data received, 0 if there was nothing to receive, |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
38 |
* or a negative number if the connection was closed or an error occurred. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
39 |
*/ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
40 |
int flib_nbsocket_recv(NonBlockSocket sock, void *data, int maxlen); |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
41 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
42 |
/** |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
43 |
* We can't do a nonblocking send over SDL_net, so this function just forwards |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
44 |
* to SDLNet_TCP_Send for convenience, which blocks until all data is sent or an |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
45 |
* error occurs. The ammount of data actually sent is returned, negative value on error. |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
46 |
*/ |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
47 |
static inline int flib_nbsocket_blocksend(NonBlockSocket sock, void *data, int len) { |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
48 |
return SDLNet_TCP_Send(sock->sock, data, len); |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
49 |
} |
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
50 |
|
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
51 |
#endif /* NONBLOCKSOCKETS_H_ */ |