/* * ======== 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); }
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; }
/* * ======== 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); }