Files
tcp-chat/src/client/requests/requests.c
2025-12-13 02:31:48 +05:00

35 lines
977 B
C

#include "requests.h"
Result(void) _recvResponse(EncryptedSocketTCP* sock,
PacketHeader* res_header, Array(u8) res, PacketType res_type)
{
Deferral(4);
try_void(EncryptedSocketTCP_recvStruct(sock, res_header));
try_void(PacketHeader_validateMagic(res_header));
if(res_header->type == PacketType_ErrorMessage){
str err_msg;
try_void(recvErrorMessage(sock, res_header, &err_msg));
Return RESULT_ERROR(err_msg, true);
}
try_void(PacketHeader_validateType(res_header, res_type));
try_void(PacketHeader_validateContentSize(res_header, res.len));
try_void(EncryptedSocketTCP_recv(sock, res, SocketRecvFlag_WholeBuffer));
Return RESULT_VOID;
}
Result(void) _sendRequest(EncryptedSocketTCP* sock,
PacketHeader* req_header, Array(u8) req)
{
Deferral(4);
try_void(EncryptedSocketTCP_sendStruct(sock, req_header));
try_void(EncryptedSocketTCP_send(sock, req));
Return RESULT_VOID;
}