Some tyhigns.

This commit is contained in:
2026-03-11 00:27:19 -04:00
parent 3b1b4f63e2
commit cbd2270628
14 changed files with 571 additions and 163 deletions

View File

@@ -6,13 +6,20 @@
#include <yyjson.h>
static const char* packet_type_strings[] = {
[PACKET_TYPE_JOIN] = "join", [PACKET_TYPE_WELCOME] = "welcome",
[PACKET_TYPE_JOIN_EVT] = "join_evt", [PACKET_TYPE_MSG] = "msg",
[PACKET_TYPE_MSG_EVT] = "msg_evt", [PACKET_TYPE_NAME] = "name",
[PACKET_TYPE_NAME_EVT] = "name_evt", [PACKET_TYPE_LEAVE_EVT] = "leave_evt",
[PACKET_TYPE_PING] = "ping", [PACKET_TYPE_PONG] = "pong",
[PACKET_TYPE_MSG_ACK] = "msg_ack", [PACKET_TYPE_NAME_ACK] = "name_ack",
[PACKET_TYPE_JOIN] = "join",
[PACKET_TYPE_WELCOME] = "welcome",
[PACKET_TYPE_JOIN_EVT] = "join_evt",
[PACKET_TYPE_MSG] = "msg",
[PACKET_TYPE_MSG_EVT] = "msg_evt",
[PACKET_TYPE_NAME] = "name",
[PACKET_TYPE_NAME_EVT] = "name_evt",
[PACKET_TYPE_PING] = "ping",
[PACKET_TYPE_PONG] = "pong",
[PACKET_TYPE_MSG_ACK] = "msg_ack",
[PACKET_TYPE_NAME_ACK] = "name_ack",
[PACKET_TYPE_HISTORY_REQ] = "history_req",
[PACKET_TYPE_HISTORY_RES] = "history_res",
[PACKET_TYPE_LEAVE_EVT] = "leave_evt",
};
PacketType packet_type_parse(const char* type) {
@@ -138,6 +145,35 @@ pack_name_ack(yyjson_mut_doc* doc, yyjson_mut_val* data, PacketNameAck* ack) {
yyjson_mut_obj_add_str(doc, data, "name", ack->name);
}
static void pack_history_res(
yyjson_mut_doc* doc, yyjson_mut_val* data, PacketHistoryRes* hist
) {
yyjson_mut_obj_add_str(doc, data, "room", hist->room);
yyjson_mut_obj_add_bool(doc, data, "has_more", hist->has_more);
yyjson_mut_obj_add_int(doc, data, "oldest_id", hist->oldest_id);
yyjson_mut_obj_add_int(doc, data, "historyc", hist->historyc);
yyjson_mut_val* history = yyjson_mut_arr(doc);
for (size_t i = 0; i < hist->historyc; i++) {
MsgData* m = hist->history[i];
if (!m) continue;
yyjson_mut_val* msg = yyjson_mut_obj(doc);
yyjson_mut_obj_add_uint(doc, msg, "id", m->id);
yyjson_mut_val* auth = yyjson_mut_obj(doc);
yyjson_mut_obj_add_uint(doc, auth, "id", m->author.id);
if (m->author.name)
yyjson_mut_obj_add_str(doc, auth, "name", *m->author.name);
else yyjson_mut_obj_add_str(doc, auth, "name", "");
yyjson_mut_obj_add_val(doc, msg, "author", auth);
if (m->parent != UINT64_MAX)
yyjson_mut_obj_add_uint(doc, msg, "parent", m->parent);
else yyjson_mut_obj_add_null(doc, msg, "parent");
yyjson_mut_obj_add_str(doc, msg, "content", m->content);
yyjson_mut_obj_add_int(doc, msg, "timestamp", m->timestamp);
yyjson_mut_arr_add_val(history, msg);
}
yyjson_mut_obj_add_val(doc, data, "history", history);
}
char* packet_string(Packet* packet, size_t* sz) {
yyjson_mut_doc* doc = yyjson_mut_doc_new(NULL);
@@ -181,6 +217,9 @@ char* packet_string(Packet* packet, size_t* sz) {
case PACKET_TYPE_NAME_ACK:
pack_name_ack(doc, data, (PacketNameAck*)packet->data);
break;
case PACKET_TYPE_HISTORY_RES:
pack_history_res(doc, data, (PacketHistoryRes*)packet->data);
break;
default:
printf(
"Something's gone badly wrong. Trying to get string of "