ClRcT clMsgQueueStatusGet_4_0_0( SaNameT *pQName, SaMsgQueueStatusT *pQueueStatus) { ClRcT rc = CL_OK; ClMsgQueueRecordT *pQEntry; SaMsgQueueHandleT qHandle; CL_MSG_INIT_CHECK(rc); if( rc != CL_OK) { goto error_out; } CL_OSAL_MUTEX_LOCK(&gClQueueDbLock); if(clMsgQNameEntryExists(pQName, &pQEntry) == CL_FALSE) { CL_OSAL_MUTEX_UNLOCK(&gClQueueDbLock); rc = CL_MSG_RC(CL_ERR_DOESNT_EXIST); clLogError("QUE", "STAT", "Queue [%.*s] does not exist. error code [0x%x].", pQName->length, pQName->value, rc); goto error_out; } qHandle = pQEntry->qHandle; CL_OSAL_MUTEX_UNLOCK(&gClQueueDbLock); rc = clMsgQueueStatusGet(qHandle, pQueueStatus); if(rc != CL_OK) clLogTrace("QUE", "STAT", "Failed to get the status of the queue [%.*s]. error code [0x%x].", pQName->length, pQName->value, rc); error_out: return rc; }
/* * Called with the msg finalize lock held. */ static int safMsgFinalize(ClBoolT *pLockStatus) { ClRcT rc = CL_OK; if(pLockStatus && !*pLockStatus) return CL_MSG_RC(CL_ERR_INVALID_STATE); CL_MSG_INIT_CHECK(rc); if( rc != CL_OK) { return rc; } gClMsgInit = CL_FALSE; if(pLockStatus) { *pLockStatus = CL_FALSE; clOsalMutexUnlock(&gClMsgFinalizeLock); } clMsgFinalizeBlocker(); rc = clMsgFinalizeBlockFin(); if(rc != CL_OK) clLogError("MSG", "INI", "Failed to cleanup the msg-finalize blocker. error code [0x%x].", rc); clMsgDebugCliDeregister(); clMsgCommIdlFinalize(); /* Finalize the IDL generated code. */ rc = clMsgCltClientTableDeregister(); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to deregister Client Table. error code [0x%x].", rc); rc = clMsgIdlClientTableDeregister(); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to deregister Server Table. error code [0x%x].", rc); clMsgIdlClientUninstall(); rc = clMsgCltSrvClientTableDeregister(); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to deregister Client Server Table. error code [0x%x].", rc); clMsgCltSrvClientUninstall(); /* Finalize cached ckpt for MSG queue & MSG queue group */ rc = clMsgQCkptFinalize(); if(rc != CL_OK) clLogError("MSG", "FIN", "clMsgQCkptFinalize(): error code [0x%x].", rc); /* Finalize database for maintaining queues. */ clMsgReceiverDatabaseFin(); rc = clMsgQueueFinalize(); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to finalize queue databases. error code [0x%x].", rc); rc = clCpmNotificationCallbackUninstall(&gMsgNotificationHandle); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to uninstall the notification callback function. error code [0x%x].", rc); rc = clOsalMutexDestroy(&gClGroupDbLock); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to destroy the group db lock. error code [0x%x].", rc); rc = clHandleDatabaseDestroy(gMsgClientHandleDb); if(rc != CL_OK) clLogError("MSG", "FIN", "Failed to destroy the client handle database. error code [0x%x].", rc); return rc; }