Skip to content

Commit ede82a1

Browse files
committed
Use enums for tri-state return values
Resolves #112
1 parent 32f4bb3 commit ede82a1

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

include/SDL3_net/SDL_net.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ extern "C" {
6161
(SDL_NET_MAJOR_VERSION > X || SDL_NET_MINOR_VERSION >= Y) && \
6262
(SDL_NET_MAJOR_VERSION > X || SDL_NET_MINOR_VERSION > Y || SDL_NET_MICRO_VERSION >= Z))
6363

64+
enum NET_TriState {
65+
NET_FAILURE = -1,
66+
NET_WOULDBLOCK,
67+
NET_SUCCESS,
68+
};
6469

6570
/**
6671
* This function gets the version of the dynamically linked SDL_net library.

src/SDL_net.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ static bool SetGetAddrInfoErrorBool(const char *msg, int err)
214214
}
215215

216216
// this blocks!
217-
static int ResolveAddress(NET_Address *addr)
217+
static enum NET_TriState ResolveAddress(NET_Address *addr)
218218
{
219219
SDL_assert(addr != NULL); // we control all this, so this shouldn't happen.
220220
struct addrinfo *ainfo = NULL;
@@ -225,23 +225,23 @@ static int ResolveAddress(NET_Address *addr)
225225
//SDL_Log("rc=%d", rc);
226226
if (rc != 0) {
227227
addr->errstr = CreateGetAddrInfoErrorString(rc);
228-
return -1; // error
228+
return NET_FAILURE; // error
229229
} else if (ainfo == NULL) {
230230
addr->errstr = SDL_strdup("Unknown error (query succeeded but result was NULL!)");
231-
return -1;
231+
return NET_FAILURE;
232232
}
233233

234234
char buf[128];
235235
rc = getnameinfo(ainfo->ai_addr, ainfo->ai_addrlen, buf, sizeof (buf), NULL, 0, NI_NUMERICHOST);
236236
if (rc != 0) {
237237
addr->errstr = CreateGetAddrInfoErrorString(rc);
238238
freeaddrinfo(ainfo);
239-
return -1; // error
239+
return NET_FAILURE; // error
240240
}
241241

242242
addr->human_readable = SDL_strdup(buf);
243243
addr->ainfo = ainfo;
244-
return 1; // success (zero means "still in progress").
244+
return NET_SUCCESS; // success (zero means "still in progress").
245245
}
246246

247247
static int SDLCALL ResolverThread(void *data)
@@ -1335,11 +1335,11 @@ NET_DatagramSocket *NET_CreateDatagramSocket(NET_Address *addr, Uint16 port)
13351335
return sock;
13361336
}
13371337

1338-
static int SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 port, const void *buf, int buflen)
1338+
static enum NET_TriState SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 port, const void *buf, int buflen)
13391339
{
13401340
struct addrinfo *addrwithport = MakeAddrInfoWithPort(addr, SOCK_DGRAM, port);
13411341
if (!addrwithport) {
1342-
return -1;
1342+
return NET_FAILURE;
13431343
}
13441344
const int rc = sendto(sock->handle, buf, (size_t) buflen, 0, addrwithport->ai_addr, addrwithport->ai_addrlen);
13451345
freeaddrinfo(addrwithport);
@@ -1350,15 +1350,15 @@ static int SendOneDatagram(NET_DatagramSocket *sock, NET_Address *addr, Uint16 p
13501350
}
13511351

13521352
SDL_assert(rc == buflen);
1353-
return 1;
1353+
return NET_SUCCESS;
13541354
}
13551355

13561356
// see if any pending data can finally be sent, etc
13571357
static int PumpDatagramSocket(NET_DatagramSocket *sock)
13581358
{
13591359
if (!sock) {
13601360
SDL_InvalidParamError("sock");
1361-
return -1;
1361+
return NET_FAILURE;
13621362
}
13631363

13641364
while (sock->pending_output_len > 0) {
@@ -1367,7 +1367,7 @@ static int PumpDatagramSocket(NET_DatagramSocket *sock)
13671367
const int rc = SendOneDatagram(sock, dgram->addr, dgram->port, dgram->buf, dgram->buflen);
13681368
if (rc < 0) { // failure!
13691369
return -1;
1370-
} else if (rc == 0) { // wouldblock
1370+
} else if (rc == NET_WOULDBLOCK) {
13711371
break; // stop trying to send packets for now.
13721372
}
13731373

0 commit comments

Comments
 (0)