#pragma once #include "tlibc/errors.h" #include "network/tcp-chat-protocol/constant.h" #define PROTOCOL_VERSION 1 /* 1.0.0 */ typedef enum PacketType { PacketType_Invalid, PacketType_ErrorMessage, PacketType_ClientHandshake, PacketType_ServerHandshake, } __attribute__((__packed__)) PacketType; typedef struct ErrorMessage { PacketHeader header; /* content stream of size `header.content_size` */ } ErrorMessage; typedef struct ClientHandshake { PacketHeader header; u8 session_key[AES_SESSION_KEY_SIZE]; } ClientHandshake; Result(void) ClientHandshake_tryConstruct(ClientHandshake* ptr, Array(u8) session_key); typedef struct ServerHandshake { PacketHeader header; u64 session_id; } ServerHandshake;