working chat app example with some rough edges
This commit is contained in:
39
os.h
39
os.h
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user