Files
djstdlib/app.c
2025-11-27 23:45:15 +01:00

53 lines
1.2 KiB
C

#define DJSTD_BASIC_ENTRY
#include "core.c"
#include "signal.h"
Server *server = NULL;
void handleSigint(int dummy) {
if (server) {
print("\n");
print("Closing server socket.\n");
serverClose(server);
print("Success\n.");
}
exit(0);
}
int djstd_entry(Arena *arena, StringList args) {
signal(SIGINT, &handleSigint);
int port = 8080;
Int32Result portParsed = parsePositiveInt(args.data[0]);
if (portParsed.valid) {
port = portParsed.result;
}
print("Starting server on port %d\n", port);
Server myserver = serverInit((ServerInitInfo){
.concurrentClients=16,
.port=port,
.memory=Megabytes(64),
});
server = &myserver;
serverListen(&myserver);
Client *client = serverAccept(&myserver);
CharList buf = PushFullListZero(arena, CharList, 257);
uint64 bytesRead = clientRead(client, (void *)buf.data, buf.length - 1);
if (bytesRead > 0) {
print("Client said: %s\n", buf.data);
print("Now that's insightful.\n");
} else if (bytesRead == -1) {
print("Connection error\n");
}
clientClose(client);
return 0;
}