#pragma once #include #include "global.h" enum net_response_type{ NET_OK, NET_NUMBER, NET_ERROR, NET_NAME, NET_LIST, NET_PONG, NET_MESSAGE, NET_HISTORY, NET_JOIN, NET_INVITE, NET_ONLINE, }; struct net_response{ enum net_response_type type; union { i64 number; char *error; char *name; struct { int nitems; char **items; }; struct { char *room; char *username; i64 timestamp; char *message; }; struct { char *username; i64 num; } online; }; }; typedef void net_callback_t(int fd,struct net_response res,void *payload); void net_set_push_callback(net_callback_t *callback); void net_set_history_callback(net_callback_t *callback); bool net_sendf(int fd,net_callback_t *callback,void *payload,const char *format,...) __attribute__((format (printf, 4, 5))); void net_handle_recv(int fd,const char *msg);