Some tyhigns.
This commit is contained in:
@@ -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 "
|
||||
|
||||
Reference in New Issue
Block a user