Program Listing for File MainProcess.cpp

Return to documentation for file (include/input/trashbin/MainProcess.cpp)

#include "MainProcess.hpp"

namespace PDJE_IPC {
using namespace MAINPROC;
bool
TXRXTransport::CheckHealth()
{
    TXRX_RESPONSE.HEALTH_CHECK.emplace();
    auto resp = TXRX_RESPONSE.HEALTH_CHECK->get_future();
    bool res  = txrx->Send(PDJE_CRYPTO::TXRXHEADER::HEALTH_CHECK, "");

    if (res) {
        res = resp.get();
    }

    TXRX_RESPONSE.HEALTH_CHECK.reset();
    if (res)
        return true;
    else {
        critlog("health check failed.");
        return false;
    }
}

std::vector<DeviceData>
TXRXTransport::GetDevices()
{
    TXRX_RESPONSE.DEVICE_LIST.emplace();
    auto resp = TXRX_RESPONSE.DEVICE_LIST->get_future();
    bool res  = txrx->Send(PDJE_CRYPTO::TXRXHEADER::DEVICE_LIST, "");

    if (!res) {
        TXRX_RESPONSE.DEVICE_LIST.reset();
        critlog("failed to request device list.");
        return {};
    }
    return resp.get();
}

bool
TXRXTransport::QueryConfig(const std::string &dumped_json)
{
    TXRX_RESPONSE.DEVICE_CONFIG.emplace();
    auto resp = TXRX_RESPONSE.DEVICE_CONFIG->get_future();
    bool res  = txrx->Send(PDJE_CRYPTO::TXRXHEADER::DEVICE_CONFIG, dumped_json);
    if (res) {
        res = resp.get();
    }

    TXRX_RESPONSE.DEVICE_CONFIG.reset();
    if (res)
        return true;
    else {
        critlog("query configure failed.");
        return false;
    }
}

void
TXRXTransport::InitEvents()
{
    auto namegen  = PDJE_IPC::RANDOM_GEN();
    auto loop_run = namegen.Gen("PDJE_IPC_EVENT_LOOP_RUN_");
    auto term     = namegen.Gen("PDJE_IPC_EVENT_TERMINATE_");

    events.input_loop_run_event.HostInit(loop_run);
    events.terminate_event.HostInit(term);
    SendIPCSharedMemory(1, loop_run, "EVENT_input_loop_run");
    SendIPCSharedMemory(1, term, "EVENT_terminate");
}
bool
TXRXTransport::Kill()
{
    TXRX_RESPONSE.KILL.emplace();
    auto resp = TXRX_RESPONSE.KILL->get_future();
    bool res  = txrx->Send(PDJE_CRYPTO::TXRXHEADER::TXRX_KILL, "");

    if (res) {
        res = resp.get();
    }

    TXRX_RESPONSE.KILL.reset();
    txrx.reset();
    if (res)
        return true;
    else {
        critlog("failed to send kill signal.");
        return false;
    }
}
}; // namespace PDJE_IPC