Exemplo n.º 1
0
/*
 *  ======== Server_delete ========
 */
Int Server_delete()
{
    Int         status;
    GateMPApp_Msg *           msg;
    MessageQ_QueueId    queId;

    Log_print0(Diags_ENTRY, "--> Server_delete:");

    /* wait for inbound message */
    status = MessageQ_get(Module.slaveQue, (MessageQ_Msg *)&msg,
        MessageQ_FOREVER);

    if (status < 0) {
        goto leave;
    }
    Log_print0(Diags_ENTRY, "--> Server_delete: got msg");
    if (msg->cmd != GATEMPAPP_CMD_SHUTDOWN) {
        status = GATEMPAPP_E_UNEXPECTEDMSG;
        goto leave;
    }

    /* send message back to say that GateMP has been cleaned up */
    queId = MessageQ_getReplyQueue(msg); /* type-cast not needed */
    msg->cmd = GATEMPAPP_CMD_SHUTDOWN_ACK;
    MessageQ_put(queId, (MessageQ_Msg)msg);

    /* delete the video message queue */
    status = MessageQ_delete(&Module.slaveQue);
    if (status < 0) {
        Log_print0(Diags_ENTRY, "Server_delete: MessageQ_delete failed");
        goto leave;
    }

    Log_print0(Diags_ENTRY, "Server_delete: MessageQ deleted");

    /* delete slave GateMP */
    status = GateMP_delete(&Module.slaveGateMPHandle);
    if (status < 0) {
        Log_print0(Diags_ENTRY, "Server_delete: GateMP_delete failed");
        goto leave;
    }

    Log_print0(Diags_ENTRY, "Server_delete: slave GateMP deleted");

leave:
    if (status < 0) {
        Log_error1("Server_delete: error=0x%x", (IArg)status);
    }

    /* disable log events */
    Log_print1(Diags_EXIT, "<-- Server_delete: %d", (IArg)status);
    Diags_setMask(MODULE_NAME"-EXF");

    return(status);
}
Exemplo n.º 2
0
Int32 System_ipcListMPDelete(ListMP_Handle *pOutHndl, ListMP_Handle *pInHndl,
                             GateMP_Handle * pOutHndleGate, GateMP_Handle * pInHndleGate)
{
    Int32 status;

    status = ListMP_delete(pOutHndl);
    UTILS_assert(status==ListMP_S_SUCCESS);

    status = ListMP_delete(pInHndl);
    UTILS_assert(status==ListMP_S_SUCCESS);

    status = GateMP_delete(pOutHndleGate);
    UTILS_assert(status==GateMP_S_SUCCESS);

    status = GateMP_delete(pInHndleGate);
    UTILS_assert(status==GateMP_S_SUCCESS);


    return status;
}
Exemplo n.º 3
0
/*
 *  ======== Server_create ========
 */
Int Server_create()
{
    Int                 status = 0;
    MessageQ_Params     msgqParams;
    GateMP_Params       gateParams;

    /* enable some log events */
    Diags_setMask(MODULE_NAME"+EXF");

    /* create GateMP */
    GateMP_Params_init(&gateParams);

    gateParams.name             = GATEMP_SLAVE_NAME;
    gateParams.localProtect     = GateMP_LocalProtect_PROCESS;
    gateParams.remoteProtect    = GateMP_RemoteProtect_SYSTEM;

    Module.slaveGateMPHandle = GateMP_create (&gateParams);

    if (Module.slaveGateMPHandle == NULL) {
        status = GATEMPAPP_E_FAILURE;
        Log_print0(Diags_INFO, "Server_create: Failed to create GateMP");
        goto leave;
    }

    /* create local message queue (inbound messages) */
    MessageQ_Params_init(&msgqParams);
    Module.slaveQue = MessageQ_create(GateMPApp_SlaveMsgQueName, &msgqParams);

    if (Module.slaveQue == NULL) {
        status = -1;
        Log_print0(Diags_INFO, "Server_create: Failed to create MessageQ");
        GateMP_delete(&Module.slaveGateMPHandle);
        goto leave;
    }

    Log_print0(Diags_INFO,"Server_create: Slave is ready");

leave:
    Log_print1(Diags_EXIT, "<-- Server_create: %d", (IArg)status);
    return (status);
}