#include "cerrarCallback.h"
#include "paquete.h"
#include <processthreadsapi.h>


BOOL cerrarCallback(PAnalizador argumentos){

    SIZE_T tamanoUuid = 36;
    PCHAR tareaUuid = getString(argumentos, &tamanoUuid);

    // Liberar el analizador antes de salir
    if (argumentos) liberarAnalizador(argumentos);

    // Optionally send a message (can be NULL for no message like Xenon)
    PPaquete salida = nuevoPaquete(0, FALSE);
    if (salida) {
        addString(salida, "Exiting...", FALSE);
    }

    // Send task complete response (similar to Xenon's implementation)
    paqueteCompletado(tareaUuid, salida);

    // Cleanup
    if (salida) liberarPaquete(salida);

    // Give a brief moment for the response to be sent before process termination
    // This is important to ensure the response reaches Mythic
    Sleep(250);

    // Exit the process
    ExitProcess(0);
    return TRUE;
}