working chat app example with some rough edges

This commit is contained in:
2025-11-30 20:01:06 +01:00
parent f311b242c2
commit 875cd9d044
5 changed files with 346 additions and 105 deletions

39
os.h
View File

@@ -57,9 +57,10 @@ struct Server {
typedef struct ServerInitInfo ServerInitInfo;
struct ServerInitInfo {
uint16 port;
uint32 concurrentClients;
uint64 memory;
int16 port;
int32 concurrentClients;
int64 memory;
int32 maxEvents;
};
typedef struct SocketConnectInfo SocketConnectInfo;
@@ -71,14 +72,46 @@ struct SocketConnectInfo {
// Server/Client interface
Server serverInit(ServerInitInfo info);
void serverListen(Server *s);
Socket *serverAccept(Server *s);
void serverClose(Server *s);
enum ServerEventType {
ServerEventType_AcceptClient,
ServerEventType_ClientMessage,
ServerEventType_None,
ServerEventType_COUNT,
};
typedef struct ServerEvent ServerEvent;
struct ServerEvent {
enum ServerEventType type;
union {
struct {} tAcceptClient;
struct {
int32 clientId;
Socket *client;
} tClientMessage;
};
};
ServerEvent *serverGetNextEvent(Server *s);
// Generic socket interface
Socket socketConnect(Arena *arena, SocketConnectInfo info);
int64 socketRead(Socket *s, byte *dest, uint64 numBytes);
DefineResult(string, String);
StringResult socketReadStr(Arena *arena, Socket *s);
int64 socketWrite(Socket *s, byte *source, uint64 numBytes);
int64 socketWriteStr(Socket *socket, string data);
void socketClose(Socket *s);
#endif