#include "responses.h"

#define srv conn->server
#define LOGGER srv->logger
#define LOG_FUNC srv->log_func
#define LOG_CONTEXT log_ctx

declare_RequestHandler(NAME)
{
    Deferral(4);
    logInfo("requested %s", req_type_name);
    
    // receive request
    NAME##Request req;
    try_void(PacketHeader_validateContentSize(req_head, sizeof(req)));
    try_void(EncryptedSocketTCP_recvStruct(&conn->sock, &req));

    // send response
    NAME##Response res;
    NAME##Response_construct(&res, res_head, );
    try_void(EncryptedSocketTCP_sendStruct(&conn->sock, res_head));
    try_void(EncryptedSocketTCP_sendStruct(&conn->sock, &res));

    Return RESULT_VOID;
}
