ClRcT clMsgQueueAllocateResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_OUT ClHandleT pQueueHandle) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(msgIdlidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallClHandleT(&(pQueueHandle), outMsgHdl, 1); if (CL_OK != rc) { goto L4; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); goto Label1; L4: clXdrMarshallClHandleT(&(pQueueHandle), 0, 1); clHandleCheckin(msgIdlidlDatabaseHdl, idlHdl); clHandleDestroy(msgIdlidlDatabaseHdl, idlHdl); return rc; Label1: clHandleCheckin(msgIdlidlDatabaseHdl, idlHdl); clHandleDestroy(msgIdlidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clMsgQueueStatusGetResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_OUT SaMsgQueueStatusT_4_0_0 pQueueStatus) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(msgCltSrvidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallSaMsgQueueStatusT_4_0_0(&(pQueueStatus), outMsgHdl, 1); if (CL_OK != rc) { goto L2; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); goto Label1; L2: clXdrMarshallSaMsgQueueStatusT_4_0_0(&(pQueueStatus), 0, 1); clHandleCheckin(msgCltSrvidlDatabaseHdl, idlHdl); clHandleDestroy(msgCltSrvidlDatabaseHdl, idlHdl); return rc; Label1: clHandleCheckin(msgCltSrvidlDatabaseHdl, idlHdl); clHandleDestroy(msgCltSrvidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clCkptRemSvrWelcomeResponseSend_5_1_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_INOUT ClVersionT pVersion) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(ckptEoidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallClVersionT(&(pVersion), outMsgHdl, 1); if (CL_OK != rc) { goto L3; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); L3: clXdrMarshallClVersionT(&(pVersion), 0, 1); clHandleCheckin(ckptEoidlDatabaseHdl, idlHdl); clHandleDestroy(ckptEoidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clMsgQueueFreeByHandle(SaMsgQueueHandleT qHandle) { ClRcT rc; ClMsgQueueInfoT *pQInfo; CL_OSAL_MUTEX_LOCK(&gClLocalQsLock); rc = clHandleCheckout(gClMsgQDatabase, qHandle, (ClPtrT *)&pQInfo); if(rc != CL_OK) { CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock); clLogError("QUE", "FREE", "Failed at checkout the passed queue handle. error code [0x%x].", rc); goto error_out; } clMsgQueueFree(pQInfo); clLogDebug("QUE", "FREE", "Queue is freed through its handle."); CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock); rc = clHandleCheckin(gClMsgQDatabase, qHandle); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to checkin a queue handle. error code [0x%x].", rc); rc = clHandleDestroy(gClMsgQDatabase, qHandle); if(rc != CL_OK) clLogError("QUE", "FREE", "Failed to destroy a queue handle. error code [0x%x].", rc); error_out: return rc; }
ClRcT clLogMasterCompIdChkNGetResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_INOUT ClUint32T pClientId) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(LogidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallClUint32T(&(pClientId), outMsgHdl, 1); if (CL_OK != rc) { goto L2; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); L2: clXdrMarshallClUint32T(&(pClientId), 0, 1); clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clLogMasterCompListGetResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_OUT ClUint32T pNumStreams,CL_OUT ClUint32T pBuffLen,ClUint8T* pBuffer) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(LogidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallClUint32T(&(pNumStreams), outMsgHdl, 1); if (CL_OK != rc) { goto L1; } rc = clXdrMarshallClUint32T(&(pBuffLen), outMsgHdl, 1); if (CL_OK != rc) { goto L2; } rc = clXdrMarshallPtrClUint8T(pBuffer, pBuffLen, outMsgHdl, 1); if (CL_OK != rc) { goto L3; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); goto Label1; L1: clXdrMarshallClUint32T(&(pNumStreams), 0, 1); L2: clXdrMarshallClUint32T(&(pBuffLen), 0, 1); L3: clXdrMarshallPtrClUint8T(pBuffer, pBuffLen, 0, 1); clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); return rc; Label1: clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); Label0: return rc; }
/*----------------------------------------------------------------------------- * Finalize API *---------------------------------------------------------------------------*/ ClRcT clGmsFinalize( CL_IN const ClGmsHandleT gmsHandle) { struct gms_instance *gms_instance_ptr = NULL; ClRcT rc= CL_OK; rc = clHandleCheckout(gmsHandleDb, gmsHandle, (void **)&gms_instance_ptr); if (rc != CL_OK) { return CL_GMS_RC(CL_ERR_INVALID_HANDLE); } if (gms_instance_ptr == NULL) { return CL_GMS_RC(CL_ERR_NULL_POINTER); } rc = clGmsMutexLock(gms_instance_ptr->response_mutex); if(rc != CL_OK) { return rc; } /* * Another thread has already started finalizing */ if (gms_instance_ptr->finalize) { clGmsMutexUnlock(gms_instance_ptr->response_mutex); if ((clHandleCheckin(gmsHandleDb, gmsHandle)) != CL_OK) { clLogError(GEN,DB, "\nclHandleCheckin Error"); } return CL_GMS_RC(CL_ERR_INVALID_HANDLE); } gms_instance_ptr->finalize = 1; clGmsMutexUnlock(gms_instance_ptr->response_mutex); clGmsMutexDelete(gms_instance_ptr->response_mutex); if ((clHandleDestroy(gmsHandleDb, gmsHandle)) != CL_OK) { clLogError(GEN,NA, "\nclHandleDestroy Error"); } if ((clHandleCheckin(gmsHandleDb, gmsHandle)) != CL_OK) { clLogError(GEN,NA, "\nclHandleCheckin Error"); } return CL_GMS_RC(rc); }
ClRcT clLogMasterAttrVerifyNGetResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode,CL_INOUT ClUint16T pStreamId,CL_OUT ClUint64T pStreamMcastAddr) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(LogidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clXdrMarshallClUint16T(&(pStreamId), outMsgHdl, 1); if (CL_OK != rc) { goto L5; } rc = clXdrMarshallClUint64T(&(pStreamMcastAddr), outMsgHdl, 1); if (CL_OK != rc) { goto L6; } rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); goto Label1; L5: clXdrMarshallClUint16T(&(pStreamId), 0, 1); L6: clXdrMarshallClUint64T(&(pStreamMcastAddr), 0, 1); clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); return rc; Label1: clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clDebugDeregister(ClHandleT hReg) { ClDebugObjT *pDebugObj = NULL; ClRcT rc = CL_OK; ClEoExecutionObjT *pEoObj = NULL; ClDebugFuncGroupT *pFuncGroup = NULL; rc = clEoMyEoObjectGet(&pEoObj); if (CL_OK != rc) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clEoMyEoObjectGet(): rc[0x %x]", rc)); return rc; } rc = clEoPrivateDataGet( pEoObj, CL_EO_DEBUG_OBJECT_COOKIE_ID, (void**) &pDebugObj); if (CL_OK != rc) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clEoPrivateDataGet(): rc[0x %x]", rc)); return rc; } rc = clHandleCheckout(pDebugObj->hDebugFnDB, hReg, (void **) &pFuncGroup); if( CL_OK != rc ) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckout(): rc[0x %x]", rc)); return rc; } pDebugObj->numFunc -= pFuncGroup->numFunc; clHeapFree(pFuncGroup->pFuncDescList); if( CL_OK != (rc = clHandleCheckin(pDebugObj->hDebugFnDB, hReg))) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckin(): rc[0x %x]", rc)); } rc = clHandleDestroy(pDebugObj->hDebugFnDB, hReg); if( CL_OK != rc ) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleDestroy(): rc[0x %x]", rc)); } return CL_OK; }
static ClRcT clLogFileHdlrFileHandleDelete(ClLogFileHandleT hFileHdlr, ClLogHandleT *phLog) { ClRcT rc = CL_OK; ClLogClntFileHdlrInfoT *pData = NULL; ClLogClntEoDataT *pClntEoEntry = NULL; CL_LOG_DEBUG_TRACE(("Enter")); rc = clLogClntEoEntryGet(&pClntEoEntry); if( CL_OK != rc ) { return rc; } rc = clHandleCheckout(pClntEoEntry->hClntHandleDB, hFileHdlr, (void **) &pData); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clHandleCheckout(): rc[0x %x]", rc)); return rc; } *phLog = pData->hLog; clLogClntFileKeyDestroy(pData->pFileKey); rc = clHandleCheckin(pClntEoEntry->hClntHandleDB, hFileHdlr); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clHandleCheckin(); rc[0x %x]", rc)); } CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, hFileHdlr), CL_OK); CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
ClRcT _ckptSectionCheckResponseSend_5_0_0(ClIdlHandleT idlHdl,ClRcT retCode) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(ckptEoidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); clHandleCheckin(ckptEoidlDatabaseHdl, idlHdl); clHandleDestroy(ckptEoidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clMsgClientsTrackCallbackResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(msgCltidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); clHandleCheckin(msgCltidlDatabaseHdl, idlHdl); clHandleDestroy(msgCltidlDatabaseHdl, idlHdl); Label0: return rc; }
ClRcT clLogMasterCompListNotifyResponseSend_4_0_0(ClIdlHandleT idlHdl,ClRcT retCode) { ClIdlSyncInfoT *pIdlSyncDeferInfo = NULL; ClRcT rc = CL_OK; ClBufferHandleT outMsgHdl = 0; rc = clHandleCheckout(LogidlDatabaseHdl,idlHdl,(void **)&pIdlSyncDeferInfo); if( rc != CL_OK) { goto Label0; } outMsgHdl = pIdlSyncDeferInfo->idlRmdDeferMsg; rc = clIdlSyncResponseSend(pIdlSyncDeferInfo->idlRmdDeferHdl,outMsgHdl, retCode); clHandleCheckin(LogidlDatabaseHdl, idlHdl); clHandleDestroy(LogidlDatabaseHdl, idlHdl); Label0: return rc; }
/* * clDispatchDeregister marks the handle for delete, which was created using * clDispatchRegister. It also wakes up any sleeping thread on SelectionObject * by writing a dummy character to the pipe */ ClRcT clDispatchDeregister( CL_IN ClHandleT dispatchHandle) { ClRcT rc = CL_OK; ClDispatchDbEntryT* thisDbEntry = NULL; ClCharT ch = '\0'; CHECK_LIB_INIT; rc = clHandleCheckout(databaseHandle, dispatchHandle, (void *)&thisDbEntry); if (rc != CL_OK) { return CL_ERR_INVALID_HANDLE; } CL_ASSERT(thisDbEntry != NULL); rc = clOsalMutexLock(thisDbEntry->dispatchMutex); if (rc != CL_OK) { /* Handle checkin and return */ if ((clHandleCheckin(databaseHandle, dispatchHandle)) != CL_OK) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckin failed")); } return rc; } thisDbEntry->shouldDelete = CL_TRUE; /* * Write a dummy character on the pipe. This is to unblock any * waiting thread on the pipe */ errno = 0; if (write(thisDbEntry->writeFd ,(void*)&ch, 1) < 0) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("write into pipe failed: %s",strerror(errno))); rc = CL_ERR_LIBRARY; } if ((clOsalMutexUnlock(thisDbEntry->dispatchMutex)) != CL_OK) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("Mutex unlock failed")); } if ((clHandleCheckin(databaseHandle, dispatchHandle)) != CL_OK) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckin failed")); } if ((clHandleDestroy(databaseHandle, dispatchHandle)) != CL_OK) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleDestroy failed")); } return rc; }
ClRcT clLogFlusherCookieHandleDestroy(ClHandleT hFlusher, ClBoolT timerExpired) { ClRcT rc = CL_OK; ClLogFlushCookieT *pFlushCookie = NULL; ClLogSvrEoDataT *pSvrEoEntry = NULL; CL_LOG_DEBUG_TRACE(("Enter")); /* * FIXME: * Unable to flush this set of records but will this be true in * future also, DON'T know * Also need to reset the startAck otherwise it will not enter * the cond_wait */ rc = clLogSvrEoEntryGet(&pSvrEoEntry, NULL); if( CL_OK != rc ) { return rc; } rc = clHandleValidate(pSvrEoEntry->hFlusherDB, hFlusher); if( CL_OK != rc ) { return rc;/*Flusher handle has already been destroyed*/ } rc = clHandleCheckout(pSvrEoEntry->hFlusherDB, hFlusher, (void **) &pFlushCookie); if( (CL_TRUE == timerExpired) && (CL_OK != rc) ) { clLogTrace("LOG", "FLS", "Timer has already destroyed the handle"); return CL_OK; } if( CL_OK != rc ) { clLogError("LOG", "FLS", "Flusher handle checkout failed : " "rc[0x %x]", rc); return rc; } if( CL_FALSE == timerExpired ) { clLogWarning("LOG", "FLS", "Didn't get ack for %d records", pFlushCookie->numRecords); } CL_LOG_CLEANUP(clTimerDelete(&pFlushCookie->hTimer), CL_OK); rc = clHandleCheckin(pSvrEoEntry->hFlusherDB, hFlusher); if( CL_OK != rc ) { clLogError("LOG", "FLS", "clHandleCheckin(): rc[0x %x]", rc); } CL_LOG_CLEANUP(clHandleDestroy(pSvrEoEntry->hFlusherDB, hFlusher), CL_OK); CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
/*----------------------------------------------------------------------------- * Initialize API *---------------------------------------------------------------------------*/ ClRcT clGmsInitialize( CL_OUT ClGmsHandleT* const gmsHandle, CL_IN const ClGmsCallbacksT* const gmsCallbacks, CL_INOUT ClVersionT* const version) { struct gms_instance *gms_instance_ptr = NULL; ClRcT rc = CL_OK; ClGmsClientInitRequestT req = {{0}}; ClGmsClientInitResponseT *res = NULL; /* Step 0: Check readiness of library */ rc = check_lib_init(); if (rc != CL_OK) { return CL_GMS_RC(CL_ERR_NOT_INITIALIZED); } /* Step 1: Checking inputs */ CL_ASSERT(gmsHandle != NULL); CL_ASSERT(version != NULL); #if 0 if ((gmsHandle == NULL) || (version == NULL)) { return CL_GMS_RC(CL_ERR_NULL_POINTER); } #endif *gmsHandle = CL_HANDLE_INVALID_VALUE; /* Step 2: Verifying version match */ rc = clVersionVerify (&version_database, version); if (rc != CL_OK) { return CL_GMS_RC(CL_ERR_VERSION_MISMATCH); } /* Step 3: Obtain unique handle */ rc = clHandleCreate(gmsHandleDb, sizeof(struct gms_instance), gmsHandle); CL_ASSERT(rc == CL_OK); #if 0 if (rc != CL_OK) { rc = CL_GMS_RC(CL_ERR_NO_RESOURCE); goto error_no_destroy; } #endif clLogInfo("GMS","CLT","GMS client handle is [%llX]",*gmsHandle); rc = clHandleCheckout(gmsHandleDb, *gmsHandle, (void **)&gms_instance_ptr); CL_ASSERT(rc == CL_OK); CL_ASSERT(gms_instance_ptr != NULL); #if 0 if(rc != CL_OK) { goto error_destroy; } if (gms_instance_ptr == NULL) { clHandleCheckin(gmsHandleDb, *gmsHandle); rc = CL_GMS_RC(CL_ERR_NULL_POINTER); goto error_destroy; } #endif rc = clGmsMutexCreate(&gms_instance_ptr->response_mutex); CL_ASSERT(rc == CL_OK); #if 0 if(rc != CL_OK) { clHandleCheckin(gmsHandleDb, *gmsHandle); goto error_destroy; } #endif /* Step 4: Negotiate version with the server */ req.clientVersion.releaseCode = version->releaseCode; req.clientVersion.majorVersion= version->majorVersion; req.clientVersion.minorVersion= version->minorVersion; rc = cl_gms_clientlib_initialize_rmd(&req, 0x0 ,&res ); if(rc != CL_OK ) { clLogError(GEN,NA,"cl_gms_clientlib_initialize_rmd failed with rc:0x%x ",rc); clGmsMutexDelete(gms_instance_ptr->response_mutex); gms_instance_ptr->response_mutex = 0; clHandleCheckin(gmsHandleDb, *gmsHandle); rc = CL_GMS_RC(rc); goto error_destroy; } /* Step 5: Initialize instance entry */ if (gmsCallbacks) { memcpy(&gms_instance_ptr->callbacks, gmsCallbacks, sizeof(ClGmsCallbacksT)); } else { memset(&gms_instance_ptr->callbacks, 0, sizeof(ClGmsCallbacksT)); } memset(&gms_instance_ptr->cluster_notification_buffer, 0, sizeof(ClGmsClusterNotificationBufferT)); memset(&gms_instance_ptr->group_notification_buffer, 0, sizeof(ClGmsGroupNotificationBufferT)); /* Step 6: Decrement handle use count and return */ if ((clHandleCheckin(gmsHandleDb, *gmsHandle)) != CL_OK) { clLogError(GEN,DB, "\nclHandleCheckin failed"); } clHeapFree(res); return CL_OK; error_destroy: clHandleDestroy(gmsHandleDb, *gmsHandle); *gmsHandle = CL_HANDLE_INVALID_VALUE; //error_no_destroy: return rc; }
static ClRcT clLogFlusherCookieHandleCreate(ClUint32T numRecords, ClTimerHandleT *phTimer, ClHandleT *phFlusher) { ClRcT rc = CL_OK; ClLogFlushCookieT *pFlushCookie = NULL; ClLogSvrEoDataT *pSvrEoEntry = NULL; ClTimerTimeOutT timeout = {0, 8000L}; ClHandleT *pTimerArg = NULL; CL_LOG_DEBUG_TRACE(("Enter")); rc = clLogSvrEoEntryGet(&pSvrEoEntry, NULL); if( CL_OK != rc ) { return rc; } if( CL_FALSE == pSvrEoEntry->logInit ) { clLogError("LOG", "FLS", "Log Service has terminated..."); return CL_OK; } CL_LOG_DEBUG_TRACE(("hFlusherDB: %p ", (ClPtrT) pSvrEoEntry->hFlusherDB)); rc = clHandleCreate(pSvrEoEntry->hFlusherDB, sizeof(ClLogFlushCookieT), phFlusher); if( CL_OK != rc ) { clLogError("LOG", "FLS", "clHandleCreate(): rc[0x %x]", rc); return rc; } pTimerArg = (ClHandleT*) clHeapCalloc(1, sizeof(ClHandleT)); if( NULL == pTimerArg ) { clLogError("LOG", "FLS", "clHeapCalloc() : rc[0x %x]", rc); CL_LOG_CLEANUP(clHandleDestroy(pSvrEoEntry->hFlusherDB, *phFlusher), CL_OK); return CL_LOG_RC(CL_ERR_NO_MEMORY); } *pTimerArg = *phFlusher; rc = clTimerCreateAndStart(timeout, CL_TIMER_ONE_SHOT, CL_TIMER_SEPARATE_CONTEXT, clLogFlusherTimerCallback, (ClPtrT)(ClWordT) pTimerArg, phTimer); if( CL_OK != rc ) { clLogError("LOG", "FLS", "clTimerCreate(): rc[0x %x]", rc); CL_LOG_CLEANUP(clHandleDestroy(pSvrEoEntry->hFlusherDB, *phFlusher), CL_OK); clHeapFree(pTimerArg); return rc; } rc = clHandleCheckout(pSvrEoEntry->hFlusherDB, *phFlusher, (void **) &pFlushCookie); if( CL_OK != rc ) { clLogError("LOG", "FLS", "clHandleCheckout(): rc[0x %x]", rc); CL_LOG_CLEANUP(clTimerDelete(phTimer), CL_OK); CL_LOG_CLEANUP(clHandleDestroy(pSvrEoEntry->hFlusherDB, *phFlusher), CL_OK); return rc; } pFlushCookie->numRecords = numRecords; pFlushCookie->hTimer = *phTimer; rc = clHandleCheckin(pSvrEoEntry->hFlusherDB, *phFlusher); if( CL_OK != rc ) { clLogError("LOG", "FLS", "clHandleCheckin(): rc[0x %x]", rc); CL_LOG_CLEANUP(clTimerDelete(phTimer), CL_OK); CL_LOG_CLEANUP(clHandleDestroy(pSvrEoEntry->hFlusherDB, *phFlusher), CL_OK); } CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
SaAisErrorT saClmFinalize ( const SaClmHandleT clmHandle ) { ClRcT rc = CL_OK; ClHandleT localHandle = CL_HANDLE_INVALID_VALUE; SaClmInstanceT *clmInstance = NULL; SA_GMS_CHECK_INIT_COUNT(); /* Handle checkout */ localHandle = (ClHandleT)clmHandle; rc = clHandleCheckout(databaseHandle, localHandle, (void**)&clmInstance); if (rc != CL_OK) { return _aspErrToAisErr(rc); } CL_ASSERT(clmInstance != NULL); /* Finalize with GMS */ rc = clGmsFinalize(localHandle); if (rc != CL_OK) { clLogError("CLM","FIN", "clGmsFinalize failed with rc 0x%x\n",rc); } /* Deregister with dispatch */ rc = clDispatchDeregister(clmInstance->dispatchHandle); if (rc != CL_OK) { clLogError(GMS_LOG_AREA_CLM,GMS_LOG_CTX_CLM_FINALISE, "clDispatchDeregister failed with rc 0x%x\n",rc); } /* Checkin the handle */ if ((clHandleCheckin(databaseHandle, localHandle)) != CL_OK) { clLogError(GMS_LOG_AREA_CLM,GMS_LOG_CTX_CLM_FINALISE, "clHandleCheckin failed"); } /* Destroy the handle */ if ((clHandleDestroy(databaseHandle, localHandle)) != CL_OK) { clLogError(GMS_LOG_AREA_CLM,GMS_LOG_CTX_CLM_FINALISE, "clHandleDestroy failed"); } SA_GMS_INIT_COUNT_DEC(); if (isLastFinalize() == CL_TRUE) { rc = clHandleDatabaseDestroy(databaseHandle); if (rc != CL_OK) { clLogError(GMS_LOG_AREA_CLM,GMS_LOG_CTX_CLM_DB, "clHandleDatabaseDestroy failed with rc 0x%x\n",rc); } } if(CL_OK != clASPFinalize()) { clLogInfo("CLM", "FIN", "ASP finalize failed, rc[0x%X]", rc); return SA_AIS_ERR_LIBRARY; } return _aspErrToAisErr(rc); }
ClRcT clLogClntStreamOpen(ClLogHandleT hLog, SaNameT *pStreamName, SaNameT *pNodeName, ClStringT *pShmName, ClUint32T shmSize, ClLogStreamHandleT *phStream, ClUint32T recSize) { ClRcT rc = CL_OK; ClLogClntEoDataT *pClntEoEntry = NULL; ClBoolT addedTable = CL_FALSE; ClBoolT addedEntry = CL_FALSE; ClCntNodeHandleT hClntStreamNode = CL_HANDLE_INVALID_VALUE; ClLogClntStreamDataT *pUserData = NULL; CL_LOG_DEBUG_TRACE(("Enter")); CL_LOG_PARAM_CHK((NULL == pStreamName), CL_LOG_RC(CL_ERR_NULL_POINTER)); CL_LOG_PARAM_CHK((NULL == pNodeName), CL_LOG_RC(CL_ERR_NULL_POINTER)); CL_LOG_PARAM_CHK((NULL == pShmName), CL_LOG_RC(CL_ERR_NULL_POINTER)); CL_LOG_PARAM_CHK((sizeof(ClLogStreamHeaderT) > shmSize), CL_LOG_RC(CL_ERR_INVALID_PARAMETER)); CL_LOG_PARAM_CHK((NULL == phStream), CL_LOG_RC(CL_ERR_NULL_POINTER)); rc = clLogClntEoEntryGet(&pClntEoEntry); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clLogClntEoEntryGet(): rc[0x %x]", rc)); return rc; } rc = clOsalMutexLock_L(&(pClntEoEntry->clntStreamTblLock)); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clOsalMutexLock(): rc[0x %x]", rc)); return rc; } if( CL_HANDLE_INVALID_VALUE == pClntEoEntry->hClntStreamTable ) { rc = clCntHashtblCreate(pClntEoEntry->maxStreams, clLogStreamKeyCompare, clLogStreamHashFn, clLogClntStreamDeleteCb, clLogClntStreamDeleteCb, CL_CNT_UNIQUE_KEY, &(pClntEoEntry->hClntStreamTable)); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntHashtblCreate(): rc[0x %x]", rc)); CL_LOG_CLEANUP( clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)),CL_OK); return rc; } addedTable = CL_TRUE; CL_LOG_DEBUG_VERBOSE(("Created the HashTable")); } rc = clLogClntStreamEntryGet(pClntEoEntry, pStreamName, pNodeName, pShmName, shmSize, &hClntStreamNode, &addedEntry); if( CL_OK != rc) { if( CL_TRUE == addedTable ) { CL_LOG_CLEANUP(clCntDelete(pClntEoEntry->hClntStreamTable), CL_OK); } CL_LOG_CLEANUP(clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)), CL_OK); return rc; } CL_LOG_DEBUG_VERBOSE(("Got the stream entry")); rc = clLogHandleStreamHandleCreate(hLog, hClntStreamNode, phStream); if( CL_OK != rc) { if( CL_TRUE == addedEntry ) { CL_LOG_CLEANUP(clCntNodeDelete(pClntEoEntry->hClntStreamTable, hClntStreamNode), CL_OK); } if( CL_TRUE == addedTable ) { CL_LOG_CLEANUP(clCntDelete(pClntEoEntry->hClntStreamTable), CL_OK); } CL_LOG_CLEANUP(clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)), CL_OK); return rc; } CL_LOG_DEBUG_VERBOSE(("Created the streamhandle")); rc = clCntNodeUserDataGet(pClntEoEntry->hClntStreamTable, hClntStreamNode, (ClCntDataHandleT *) &pUserData); if( CL_OK != rc ) { CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, *phStream), CL_OK); *phStream = CL_HANDLE_INVALID_VALUE; if( CL_TRUE == addedEntry ) { CL_LOG_CLEANUP(clCntNodeDelete(pClntEoEntry->hClntStreamTable, hClntStreamNode), CL_OK); } if( CL_TRUE == addedTable ) { CL_LOG_CLEANUP(clCntDelete(pClntEoEntry->hClntStreamTable), CL_OK); } CL_LOG_CLEANUP(clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)), CL_OK); return rc; } #ifdef NO_SAF pUserData->recSize=recSize; #endif CL_LOG_DEBUG_VERBOSE(("Got stream entry")); rc = clBitmapBitSet(pUserData->hStreamBitmap, CL_HDL_IDX(*phStream)); if( CL_OK != rc ) { CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, *phStream), CL_OK); *phStream = CL_HANDLE_INVALID_VALUE; if( CL_TRUE == addedEntry ) { CL_LOG_CLEANUP(clCntNodeDelete(pClntEoEntry->hClntStreamTable, hClntStreamNode), CL_OK); } if( CL_TRUE == addedTable ) { CL_LOG_CLEANUP(clCntDelete(pClntEoEntry->hClntStreamTable), CL_OK); } CL_LOG_CLEANUP(clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)), CL_OK); return rc; } CL_LOG_DEBUG_VERBOSE(("Updated stream bitmap")); rc = clLogHandleInitHandleStreamAdd(hLog, *phStream); if( CL_OK != rc ) { CL_LOG_CLEANUP(clBitmapBitClear(pUserData->hStreamBitmap, CL_HDL_IDX(*phStream)), CL_OK); CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, *phStream), CL_OK); *phStream = CL_HANDLE_INVALID_VALUE; if( CL_TRUE == addedEntry ) { CL_LOG_CLEANUP(clCntNodeDelete(pClntEoEntry->hClntStreamTable, hClntStreamNode), CL_OK); } if( CL_TRUE == addedTable ) { CL_LOG_CLEANUP(clCntDelete(pClntEoEntry->hClntStreamTable), CL_OK); } CL_LOG_CLEANUP(clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)), CL_OK); return rc; } CL_LOG_DEBUG_VERBOSE(("Updated init handle")); rc = clOsalMutexUnlock_L(&(pClntEoEntry->clntStreamTblLock)); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clOsalMutexUnlock(): rc[0x %x]", rc)); return rc; } CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
ClRcT clAmsSAFinalize( CL_IN ClAmsClientHandleT amsHandle) { ClRcT rc; clAmsClientFinalizeRequestT req; clAmsClientFinalizeResponseT *res = NULL; struct ams_instance *ams_instance = NULL; /* * Checkout the client handle */ if ( (rc = clHandleCheckout( handle_database, amsHandle, (void *)&ams_instance)) != CL_OK ) goto error; if ( ( rc = clOsalMutexLock(ams_instance->response_mutex)) != CL_OK ) goto error; /* * Another thread has already started finalizing */ if (ams_instance->finalize) { if (( rc = clOsalMutexUnlock(ams_instance->response_mutex)) != CL_OK ) goto error; clHandleCheckin(handle_database, amsHandle); rc = CL_ERR_INVALID_HANDLE; goto error; } ams_instance->finalize = 1; if ( (rc = clOsalMutexUnlock(ams_instance->response_mutex)) != CL_OK ) goto error; /* * Send the information to the server to finalize the * corresponding handle */ req.handle = ams_instance->server_handle; if ( (rc = cl_ams_client_finalize( &req, &res)) != CL_OK ) goto error; /* * Delete the Mutex */ if ( (rc = clOsalMutexDelete (ams_instance->response_mutex) ) != CL_OK ) goto error; /* * Destroy the handle */ if ( (rc = clHandleDestroy( handle_database, amsHandle)) != CL_OK ) goto error; /* * Check-In the handle */ if ( (rc = clHandleCheckin( handle_database, amsHandle)) != CL_OK ) goto error; clHeapFree((void*)res); res = NULL; return CL_OK; error: clHeapFree((void*)res); res = NULL; return CL_AMS_RC(rc); }
ClRcT clDebugRegister(ClDebugFuncEntryT *funcArray, ClUint32T funcArrayLen, ClHandleT *phDebugReg)/* - by user - needs to be exposed*/ { ClRcT rc = CL_OK; ClDebugObjT *pDebugObj = NULL; ClUint32T i = 0; ClEoExecutionObjT *pEoObj = NULL; ClDebugFuncGroupT *pFuncGroup = NULL; if ((0 == funcArrayLen) || (NULL == funcArray)) { clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_WARNING,CL_DEBUG_LIB_CLIENT, CL_LOG_MESSAGE_1_INVALID_PARAMETER,"Arguments are Invalid"); return CL_DEBUG_RC(CL_ERR_INVALID_PARAMETER); } rc = clEoMyEoObjectGet(&pEoObj); if (CL_OK != rc) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clEoMyEoObjectGet(): rc[0x %x]", rc)); return rc; } rc = clEoPrivateDataGet( pEoObj, CL_EO_DEBUG_OBJECT_COOKIE_ID, (void**) &pDebugObj); if (CL_OK != rc) { return rc; } /* Detecting dupilcate entries are there or not */ rc = clDebugDuplicateCommandDetect(pDebugObj, funcArray, funcArrayLen); if( CL_OK != rc ) { return rc; } rc = clHandleCreate(pDebugObj->hDebugFnDB, sizeof(ClDebugFuncGroupT), phDebugReg); if( CL_OK != rc ) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCreate(): rc[0x %x]", rc)); return rc; } rc = clHandleCheckout(pDebugObj->hDebugFnDB, *phDebugReg, (void **) &pFuncGroup); if( CL_OK != rc ) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckout(): rc[0x %x]", rc)); clHandleDestroy(pDebugObj->hDebugFnDB, *phDebugReg); return rc; } pFuncGroup->pFuncDescList = clHeapAllocate(sizeof(ClDebugFuncEntryT) * funcArrayLen); if (NULL == pFuncGroup->pFuncDescList) { clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_CRITICAL,CL_DEBUG_LIB_CLIENT, CL_LOG_MESSAGE_0_MEMORY_ALLOCATION_FAILED); clHandleCheckin(pDebugObj->hDebugFnDB, *phDebugReg); clHandleDestroy(pDebugObj->hDebugFnDB, *phDebugReg); return CL_DEBUG_RC(CL_ERR_NO_MEMORY); } for (i = 0; i < funcArrayLen; i++) { pFuncGroup->pFuncDescList[i] = funcArray[i]; } pFuncGroup->numFunc = funcArrayLen; pDebugObj->numFunc += pFuncGroup->numFunc; if( CL_OK != (rc = clHandleCheckin(pDebugObj->hDebugFnDB, *phDebugReg))) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckin(): rc[0x %x]", rc)); } return CL_OK; }
static ClRcT clLogFileHdlrHandleCreate(ClLogHandleT hLog, ClBoolT isDelete, ClUint32T operatingLvl, ClLogClntFileKeyT *pFileKey, ClHandleT *phFile) { ClRcT rc = CL_OK; ClBoolT entryAdd = CL_FALSE; ClLogClntFileHdlrInfoT *pData = NULL; ClLogClntEoDataT *pClntEoEntry = NULL; CL_LOG_DEBUG_TRACE(("Enter")); rc = clLogClntEoEntryGet(&pClntEoEntry); if( CL_OK != rc ) { return rc; } rc = clHandleCreate(pClntEoEntry->hClntHandleDB, sizeof(ClLogClntFileHdlrInfoT), phFile); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clHandleCreate(); rc[0x %x]", rc)); if( CL_TRUE == entryAdd ) { CL_LOG_CLEANUP(clHandleDatabaseDestroy(pClntEoEntry->hClntHandleDB), CL_OK); } return rc; } rc = clHandleCheckout(pClntEoEntry->hClntHandleDB, *phFile, (void **) &pData); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clHandleCheckout(): rc[0x %x]", rc)); CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, *phFile), CL_OK); if( CL_TRUE == entryAdd ) { CL_LOG_CLEANUP(clHandleDatabaseDestroy(pClntEoEntry->hClntHandleDB), CL_OK); } return rc; } pData->type = CL_LOG_FILE_HANDLE; pData->isDelete = isDelete; pData->startRead = 0; pData->operatingLvl = operatingLvl; pData->hLog = hLog; pData->pFileKey = pFileKey; rc = clHandleCheckin(pClntEoEntry->hClntHandleDB, *phFile); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clHandleCheckin(); rc[0x %x]", rc)); CL_LOG_CLEANUP(clHandleDestroy(pClntEoEntry->hClntHandleDB, *phFile), CL_OK); if( CL_TRUE == entryAdd ) { CL_LOG_CLEANUP(clHandleDatabaseDestroy(pClntEoEntry->hClntHandleDB), CL_OK); } return rc; } CL_LOG_DEBUG_TRACE(("Exit")); return rc; }