static ClRcT clLogMasterFileDataPack(ClLogFileDataT *pFileData, ClBufferHandleT hFileEntryBuf) { ClRcT rc = CL_OK; ClUint32T cntSize = 0; CL_LOG_DEBUG_TRACE(("Enter")); /* * Assuming: fileLocation and fileName in the Attributes are empty */ rc = VDECL_VER(clXdrMarshallClLogStreamAttrIDLT, 4, 0, 0)(&(pFileData->streamAttr), hFileEntryBuf, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(( "clXdrMarshallClLogStreamAttributesT(): rc[0x %x]", rc)); return rc; } rc = clCntSizeGet(pFileData->hStreamTable, &cntSize); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntSizeGet(); rc[0x %x]", rc)); return rc; } rc = clXdrMarshallClUint32T(&cntSize, hFileEntryBuf, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallClUint32T(): rc[0x %x]", rc)); return rc; } rc = clCntWalk(pFileData->hStreamTable, clLogMasterStreamEntryPack, (ClCntArgHandleT) hFileEntryBuf, sizeof(hFileEntryBuf)); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntWalk(): rc[0x %x]", rc)); return rc; } CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
static ClRcT clLogSvrStreamInfoPack(ClLogSvrEoDataT *pSvrEoEntry, ClCntNodeHandleT svrStreamNode, ClBufferHandleT msg) { ClRcT rc = CL_OK; ClUint32T size = 0; ClLogStreamKeyT *pStreamKey = NULL; ClLogSvrStreamDataT *pSvrStreamData = NULL; CL_LOG_DEBUG_TRACE(("Enter")); rc = clCntNodeUserDataGet(pSvrEoEntry->hSvrStreamTable, svrStreamNode, (ClCntDataHandleT *)&pSvrStreamData); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntDataForNodeGet(): rc[0x %x]\n", rc)); return rc; } rc = clCntNodeUserKeyGet(pSvrEoEntry->hSvrStreamTable, svrStreamNode, (ClCntKeyHandleT *)&pStreamKey); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntNodeUserKeyGet(): rc[0x %x]\n", rc)); return rc; } rc = clXdrMarshallSaNameT(&(pStreamKey->streamName), msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); return rc; } rc = clXdrMarshallSaNameT(&(pStreamKey->streamScopeNode), msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); return rc; } /* * Copy file name and file location keys to reconstruct back the fileowner address */ clXdrMarshallClStringT(&pSvrStreamData->fileName, msg, 0); clXdrMarshallClStringT(&pSvrStreamData->fileLocation, msg, 0); rc = clCntSizeGet(pSvrStreamData->hComponentTable, &size); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntSizeGet(); rc[0x %x]", rc)); return rc; } rc = clXdrMarshallClUint32T(&size, msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallClUint32T(): rc[0x %x]", rc)); return rc; } rc = clCntWalk(pSvrStreamData->hComponentTable, clLogSvrCompTablePack, &msg, sizeof(&msg)); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntWalk(): rc[0x %x]", rc)); return rc; } CL_LOG_DEBUG_TRACE(("Exit")); return rc; }
/** * API to un-register a service with transaction-agent */ ClRcT clTxnAgentServiceUnRegister(CL_IN ClTxnAgentServiceHandleT tHandle) { ClRcT rc = CL_OK; ClUint8T twoPC = 0; ClTxnAgentCompServiceInfoT *pCompService = NULL; CL_FUNC_ENTER(); if (tHandle == 0x0) { CL_FUNC_EXIT(); return CL_TXN_RC(CL_ERR_INVALID_HANDLE); } /* This is a request from service hosted in the component to unregister from the transaction-management. Remove the entry from the data-structure and invalidate the handle FIXME: Before actually deleting it, check to see if this service is part of any active txn or not */ rc = clCntDataForKeyGet(clTxnAgntCfg->compServiceMap, (ClCntKeyHandleT) &(((ClTxnAgentCompServiceInfoT *)tHandle)->serviceType), (ClCntDataHandleT *)&pCompService); if (CL_OK == rc) { ClUint32T srvCount; if (pCompService->serviceCapability == CL_TXN_AGENT_SERVICE_1PC) { twoPC = 0; clTxnAgntCfg->agentCapability &= ~(CL_TXN_AGENT_SERVICE_1PC); } else if(pCompService->serviceCapability == CL_TXN_AGENT_SERVICE_2PC) { twoPC = 1; } rc = clCntAllNodesForKeyDelete(clTxnAgntCfg->compServiceMap, (ClCntKeyHandleT) &(((ClTxnAgentCompServiceInfoT *)tHandle)->serviceType)); if(CL_OK != rc) { clLogError("AGT", NULL, "Failed to delete node from compServiceMap corresponding to service[%d]", ((ClTxnAgentCompServiceInfoT *)tHandle)->serviceType); return rc; } /* Reset agent capability, if necessary */ rc = clCntSizeGet(clTxnAgntCfg->compServiceMap, &srvCount); if ( (CL_OK == rc) && (srvCount == 0x0) ) { clTxnAgntCfg->agentCapability = CL_TXN_AGENT_NO_SERVICE_REGD; } else if ( (CL_OK == rc) && (srvCount == 0x1) && ( (clTxnAgntCfg->agentCapability & CL_TXN_AGENT_SERVICE_1PC) == CL_TXN_AGENT_SERVICE_1PC) ) { clTxnAgntCfg->agentCapability = CL_TXN_AGENT_SERVICE_1PC; } else if ( CL_OK != rc ) { CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("Error while reading number of service registered. rc:0x%x", rc)); } } if(CL_OK == rc) clLogNotice("AGT", "FIN", "Unregistering [%s] service successfull", twoPC ? "2PC":"READ"); CL_TXN_RETURN_RC(rc, ("Failed to unregister component-service rc:0x%x\n", rc)); }
ClRcT clLogStreamOwnerEntryPack(SaNameT *pStreamName, SaNameT *pStreamScopeNode, ClLogStreamOwnerDataT *pStreamOwnerData, ClBufferHandleT msg) { ClRcT rc = CL_OK; ClLogStreamOwnerDataIDLT soData = {0}; ClUint32T size = 0; CL_LOG_DEBUG_TRACE(("Enter")); rc = clXdrMarshallSaNameT(pStreamName, msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); return rc; } rc = clXdrMarshallSaNameT(pStreamScopeNode, msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); return rc; } soData.streamId = pStreamOwnerData->streamId; soData.streamMcastAddr = pStreamOwnerData->streamMcastAddr; soData.dsId = pStreamOwnerData->dsId; soData.isNewStream = pStreamOwnerData->isNewStream; soData.openCnt = pStreamOwnerData->openCnt; soData.ackerCnt = pStreamOwnerData->ackerCnt; soData.nonAckerCnt = pStreamOwnerData->nonAckerCnt; clLogStreamAttributesCopy(&pStreamOwnerData->streamAttr, &soData.streamAttr, CL_TRUE); rc = VDECL_VER(clXdrMarshallClLogStreamOwnerDataIDLT, 4, 0, 0)(&soData, msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); clHeapFree(soData.streamAttr.fileName.pValue); clHeapFree(soData.streamAttr.fileLocation.pValue); return rc; } rc = clLogStreamOwnerFilterInfoPack(pStreamOwnerData, msg); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallSaNameT(): rc[0x %x]", rc)); clHeapFree(soData.streamAttr.fileName.pValue); clHeapFree(soData.streamAttr.fileLocation.pValue); return rc; } rc = clCntSizeGet(pStreamOwnerData->hCompTable, &size); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clCntSizeGet(); rc[0x %x]", rc)); clHeapFree(soData.streamAttr.fileName.pValue); clHeapFree(soData.streamAttr.fileLocation.pValue); return rc; } rc = clXdrMarshallClUint32T(&size, msg, 0); if( CL_OK != rc ) { CL_LOG_DEBUG_ERROR(("clXdrMarshallClUint32T(): rc[0x %x]", rc)); clHeapFree(soData.streamAttr.fileName.pValue); clHeapFree(soData.streamAttr.fileLocation.pValue); return rc; } rc = clCntWalk(pStreamOwnerData->hCompTable, clLogCompTablePack, (ClCntArgHandleT) msg, sizeof(msg)); clHeapFree(soData.streamAttr.fileName.pValue); clHeapFree(soData.streamAttr.fileLocation.pValue); CL_LOG_DEBUG_TRACE(("Exit")); return rc; }