本文整理汇总了C++中clHandleCheckin函数的典型用法代码示例。如果您正苦于以下问题:C++ clHandleCheckin函数的具体用法?C++ clHandleCheckin怎么用?C++ clHandleCheckin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clHandleCheckin函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: clMsgQueueAllocateResponseSend_4_0_0
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;
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:33,代码来源:msgIdlClientCallsFromServerServer.c
示例2: clMsgQueueStatusGetResponseSend_4_0_0
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;
}
开发者ID:rajiva,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:33,代码来源:msgCltSrvClientCallsFromClientToClientServerServer.c
示例3: clGmsFinalize
/*-----------------------------------------------------------------------------
* 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);
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:58,代码来源:clGmsApi.c
示例4: clCkptRemSvrWelcomeResponseSend_5_1_0
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;
}
开发者ID:dharamjhatakia,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:31,代码来源:ckptEockptServerPeerPeerExtFuncServer.c
示例5: clLogMasterCompIdChkNGetResponseSend_4_0_0
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;
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:31,代码来源:LogPortMasterServer.c
示例6: clMsgMessageCancel
ClRcT clMsgMessageCancel(SaMsgQueueHandleT qHandle)
{
ClRcT rc;
ClRcT retCode;
ClMsgQueueInfoT *pQInfo;
CL_OSAL_MUTEX_LOCK(&gClLocalQsLock);
rc = clHandleCheckout(gClMsgQDatabase, qHandle, (void**)&pQInfo);
if(rc != CL_OK)
{
CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock);
clLogError("MSG", "CANL", "Failed to checkout the passed handle. error code [0x%x].", rc);
goto error_out;
}
CL_OSAL_MUTEX_LOCK(&pQInfo->qLock);
CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock);
rc = clMsgUnblockThreadsOfQueue(pQInfo);
CL_OSAL_MUTEX_UNLOCK(&pQInfo->qLock);
retCode = clHandleCheckin(gClMsgQDatabase, qHandle);
if(retCode != CL_OK)
clLogError("QUE", "CANL", "Failed to checkin queue handle. error code [0x%x].", retCode);
error_out:
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:29,代码来源:clMsgQueue.c
示例7: clMsgQueueFreeByHandle
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;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:32,代码来源:clMsgQueue.c
示例8: saClmSelectionObjectGet
SaAisErrorT
saClmSelectionObjectGet (
const SaClmHandleT clmHandle,
SaSelectionObjectT*const selectionObject
)
{
ClRcT rc;
ClHandleT localHandle = CL_HANDLE_INVALID_VALUE;
SaClmInstanceT *clmInstance = NULL;
SA_GMS_CHECK_INIT_COUNT();
/* Check the validity of the handle */
localHandle = (ClHandleT)clmHandle;
rc = clHandleCheckout(databaseHandle, localHandle, (void**)&clmInstance);
if (rc != CL_OK)
{
return _aspErrToAisErr(rc);
}
CL_ASSERT(clmInstance != NULL);
rc = clDispatchSelectionObjectGet(
clmInstance->dispatchHandle,
selectionObject);
if ((clHandleCheckin(databaseHandle, localHandle)) != CL_OK)
{
clLogError(GMS_LOG_AREA_CLM,CL_LOG_CONTEXT_UNSPECIFIED,
"clHandleCheckin failed");
}
return _aspErrToAisErr(rc);
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:34,代码来源:clSafGmsWrapper.c
示例9: saClmClusterNodeGetAsync
SaAisErrorT
saClmClusterNodeGetAsync (
const SaClmHandleT clmHandle,
const SaInvocationT invocation,
const SaClmNodeIdT nodeId)
{
ClRcT rc;
ClHandleT localHandle = CL_HANDLE_INVALID_VALUE;
SaClmInstanceT *clmInstance = NULL;
SA_GMS_CHECK_INIT_COUNT();
/* Check the validity of the handle */
localHandle = (ClHandleT)clmHandle;
rc = clHandleCheckout(databaseHandle, localHandle, (void**)&clmInstance);
if (rc != CL_OK)
{
return _aspErrToAisErr(rc);
}
CL_ASSERT(clmInstance != NULL);
rc = clGmsClusterMemberGetAsync(localHandle,
invocation,
(ClGmsMemberIdT)nodeId);
if ((clHandleCheckin(databaseHandle, localHandle)) != CL_OK)
{
clLogError(GMS_LOG_AREA_CLM,CL_LOG_CONTEXT_UNSPECIFIED,
"clHandleCheckin failed");
}
return _aspErrToAisErr(rc);
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:33,代码来源:clSafGmsWrapper.c
示例10: clLogMasterCompListGetResponseSend_4_0_0
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;
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:47,代码来源:LogPortMasterServer.c
示例11: clGmsClusterLeaderElect
/*-----------------------------------------------------------------------------
* Cluster Leader Elect API
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterLeaderElect(
CL_IN const ClGmsHandleT gmsHandle,
CL_IN const ClGmsNodeIdT preferredLeader,
CL_INOUT ClGmsNodeIdT *leader,
CL_INOUT ClGmsNodeIdT *deputy,
CL_INOUT ClBoolT *leadershipChanged)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsClusterLeaderElectRequestT req = {0};
ClGmsClusterLeaderElectResponseT *res = NULL;
if ((leader == NULL) || (deputy == NULL) || (leadershipChanged == NULL))
{
return CL_GMS_RC(CL_ERR_NULL_POINTER);
}
CL_GMS_SET_CLIENT_VERSION( req );
rc = clHandleCheckout(gmsHandleDb, gmsHandle, (void**)&gms_instance_ptr);
if (rc != CL_OK)
{
return rc;
}
if (gms_instance_ptr == NULL)
{
return CL_GMS_RC(CL_ERR_NULL_POINTER);
}
clGmsMutexLock( gms_instance_ptr->response_mutex);
req.gmsHandle = gmsHandle;
req.preferredLeaderNode = preferredLeader;
rc = cl_gms_cluster_leader_elect_rmd(&req, 0 /* use def. timeout */, &res);
if ((rc != CL_OK) || (res == NULL)) /* If there was an error, res isn't allocated */
{
goto error_unlock_checkin;
}
rc = res->rc;
*leader = res->leader;
*deputy = res->deputy;
*leadershipChanged = res->leadershipChanged;
clHeapFree((void*)res);
error_unlock_checkin:
clGmsMutexUnlock(gms_instance_ptr->response_mutex);
if (clHandleCheckin(gmsHandleDb, gmsHandle) != CL_OK)
{
clLogError(LEA,NA,
"\nclHandleCheckin failed");
}
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:62,代码来源:clGmsApi.c
示例12: clGmsClusterMemberGetAsync
/*-----------------------------------------------------------------------------
* Cluster Member Get Async API
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterMemberGetAsync(
CL_IN const ClGmsHandleT gmsHandle,
CL_IN const ClInvocationT invocation,
CL_IN const ClGmsNodeIdT nodeId)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsClusterMemberGetAsyncRequestT req = {0};
ClGmsClusterMemberGetAsyncResponseT *res = NULL;
CL_GMS_SET_CLIENT_VERSION( req );
rc = clHandleCheckout(gmsHandleDb, gmsHandle, (void**)&gms_instance_ptr);
if (rc != CL_OK)
{
return rc;
}
if (gms_instance_ptr == NULL)
{
return CL_GMS_RC(CL_ERR_NULL_POINTER);
}
if (gms_instance_ptr->callbacks.clGmsClusterMemberGetCallback == NULL)
{
rc = CL_GMS_RC(CL_ERR_NO_CALLBACK);
goto error_checkin;
}
req.gmsHandle = gmsHandle;
req.nodeId = nodeId;
req.invocation = invocation;
req.address.iocPhyAddress.nodeAddress = clIocLocalAddressGet();
rc = clEoMyEoIocPortGet(&(req.address.iocPhyAddress.portId));
if (rc != CL_OK)
{
goto error_checkin;
}
clGmsMutexLock(gms_instance_ptr->response_mutex);
rc = cl_gms_cluster_member_get_async_rmd(&req, 0 /* use def. timeout */,
&res);
if (rc != CL_OK) /* If there was an error, res isn't allocated */
{
goto error_unlock_checkin;
}
error_unlock_checkin:
clGmsMutexUnlock(gms_instance_ptr->response_mutex);
error_checkin:
if (clHandleCheckin(gmsHandleDb, gmsHandle) != CL_OK)
{
clLogError(CLM,NA,
"\nclHandleCheckin failed");
}
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:61,代码来源:clGmsApi.c
示例13: clHandleDatabaseDestroy
/*
* Frees up the handle database specified by databaseHandle. If the handle
* database is empty, it frees up the database immediately. Otherwise,
* it will mark the database for deletion and free it when the last entry
* is deleted.
*/
ClRcT
clHandleDatabaseDestroy(ClHandleDatabaseHandleT databaseHandle)
{
ClHdlDatabaseT *hdbp = (ClHdlDatabaseT*)databaseHandle;
ClRcT ec = CL_OK;
ClHandleT handle = 0;
hdlDbValidityChk(hdbp);
ec = pthread_mutex_lock(&hdbp->mutex);
if (ec != 0)
{
return CL_HANDLE_RC(CL_ERR_MUTEX_ERROR);
}
clDbgResourceNotify(clDbgHandleGroupResource, clDbgRelease, 0, hdbp, ("Handle database %p released", (ClPtrT) hdbp));
/*
* Go thru the list of handles and delete everything, if they have not
* been cleaned up properly, through warning message and destroy the
* database
*/
if (hdbp->n_handles_used > 0) /* database is not empty */
{
for( handle = 0; handle < hdbp->n_handles; handle++)
{
if( hdbp->handles[handle].state != HANDLE_STATE_EMPTY )
{
/* explicitly making '0' for smooth removal of handles */
hdbp->handles[handle].ref_count = 1;
hdbp->handles[handle].state = HANDLE_STATE_PENDINGREMOVAL;
ec = pthread_mutex_unlock(&hdbp->mutex);
if( ec != 0 )
{
/* Who cares about the error code, during shut down */
goto free_exit;
}
clLogWarning(CL_HDL_AREA, CL_HDL_CTX_DBDESTROY,
"Handle [%p:%#llX] has not been cleaned, destroying...",
(ClPtrT) hdbp, (handle + 1));
clHandleCheckin(databaseHandle, handle + 1);
ec = pthread_mutex_lock(&hdbp->mutex);
if( ec != 0 )
{
goto free_exit;
}
}
}
}
/* Explicitly not checking the error code */
pthread_mutex_unlock(&hdbp->mutex);
free_exit:
if( NULL != hdbp->handles )
{
free(hdbp->handles);
}
hdbp->pValidDb = (void *) CL_HDL_INVALID_COOKIE;
clHeapFree(hdbp);
return CL_OK;
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:64,代码来源:clHandleApi.c
示例14: clLogInitHandleBitmapFileRemove
ClRcT
clLogInitHandleBitmapFileRemove(ClLogHandleT hLog,
ClLogFileHandleT hFileHdlr)
{
ClRcT rc = CL_OK;
ClLogInitHandleDataT *pData = NULL;
ClLogClntEoDataT *pClntEoEntry = NULL;
CL_LOG_DEBUG_TRACE(("Enter"));
rc = clLogClntEoEntryGet(&pClntEoEntry);
if( CL_OK != rc )
{
CL_LOG_DEBUG_ERROR(("clLogClntEoEntryGet(): rc[0x %x]", rc));
return rc;
}
rc = clHandleCheckout(pClntEoEntry->hClntHandleDB, hLog,
(void **) (&pData));
if( CL_OK != rc )
{
CL_LOG_DEBUG_ERROR(("clHandleCheckout(): rc[0x %x]\n", rc));
return rc;
}
rc = clBitmapBitClear(pData->hStreamBitmap, hFileHdlr);
if( CL_OK != rc )
{
CL_LOG_DEBUG_ERROR(("clBitmapBitSet(): rc[0x %x]", rc));
CL_LOG_CLEANUP(clHandleCheckin(pClntEoEntry->hClntHandleDB, hLog),
CL_OK);
return rc;
}
rc = clHandleCheckin(pClntEoEntry->hClntHandleDB, hLog);
if( CL_OK != rc )
{
CL_LOG_DEBUG_ERROR(("clHandleCheckin(): rc[0x %x]", rc));
return rc;
}
CL_LOG_DEBUG_TRACE(("Exit"));
return rc;
}
开发者ID:NguyenHoangOC,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:44,代码来源:clLogClntFileHdlr.c
示例15: clDebugContexDetailsPack
ClRcT
clDebugContexDetailsPack(ClHandleDatabaseHandleT hHandleDB,
ClHandleT handle,
ClPtrT pData)
{
ClRcT rc = CL_OK;
ClBufferHandleT outMsgHdl = (ClBufferHandleT) pData;
ClDebugFuncGroupT *pFuncGroup = NULL;
ClUint32T i = 0;
rc = clHandleCheckout(hHandleDB, handle, (void *) &pFuncGroup);
if( CL_OK != rc )
{
CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckout(): rc[0x %x]", rc));
return rc;
}
for (i = 0; i < pFuncGroup->numFunc; i++)
{
rc = clXdrMarshallArrayClCharT(pFuncGroup->pFuncDescList[i].funcName,
CL_DEBUG_FUNC_NAME_LEN,
outMsgHdl,0);
if (CL_OK != rc)
{
clHandleCheckin(hHandleDB, handle);
return rc;
}
rc = clXdrMarshallArrayClCharT(pFuncGroup->pFuncDescList[i].funcHelp,
CL_DEBUG_FUNC_HELP_LEN,
outMsgHdl,0);
if (CL_OK != rc)
{
clHandleCheckin(hHandleDB, handle);
return rc;
}
}
clHandleCheckin(hHandleDB, handle);
return rc;
}
开发者ID:rajiva,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:43,代码来源:clDebug.c
示例16: clGmsClusterTrackCallbackHandler
/*----------------------------------------------------------------------------
* Cluster Track Callback Handler
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterTrackCallbackHandler(
CL_IN ClGmsClusterTrackCallbackDataT* const res)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsHandleT gmsHandle = CL_GMS_INVALID_HANDLE;
CL_ASSERT(res != NULL);
clLog(INFO,NA,NA,"received cluster track callback");
gmsHandle = res->gmsHandle;
rc = clHandleCheckout(gmsHandleDb, gmsHandle, (void**)&gms_instance_ptr);
if (rc != CL_OK)
{
goto error_free_res;
}
if (gms_instance_ptr == NULL)
{
rc = CL_GMS_RC(CL_ERR_NULL_POINTER);
goto error_free_res;
}
if (gms_instance_ptr->callbacks.clGmsClusterTrackCallback == NULL)
{
rc = CL_GMS_RC(CL_ERR_NO_CALLBACK);
goto error_checkin_free_res;
}
/*
* Calling the user's callback function with the data. The user cannot
* free the data we provide. If it needs to reatin it, it has to copy
* it out from what we provide here.
*/
(*gms_instance_ptr->callbacks.clGmsClusterTrackCallback)
(gmsHandle, &res->buffer, res->numberOfMembers, res->rc);
error_checkin_free_res:
if (clHandleCheckin(gmsHandleDb, gmsHandle) != CL_OK)
{
clLogError(CLM,NA,
"\nclHandleCheckin failed");
}
error_free_res:
/* Need to free data (res) if are not able to call the actual callback */
if (res->buffer.notification != NULL)
{
clHeapFree((void*)res->buffer.notification);
}
clHeapFree((void*)res);
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:57,代码来源:clGmsApi.c
示例17: clLogMasterAttrVerifyNGetResponseSend_4_0_0
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;
}
开发者ID:joaohf,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:40,代码来源:LogPortMasterServer.c
示例18: clDispatchSelectionObjectGet
/*
* clDispatchSelectionObject returns the selection object [readFd] associated
* with this particular initialization of the dispatch library
*/
ClRcT clDispatchSelectionObjectGet(
CL_IN ClHandleT dispatchHandle,
CL_OUT ClSelectionObjectT* pSelectionObject)
{
ClRcT rc = CL_OK;
ClDispatchDbEntryT* thisDbEntry = NULL;
if (pSelectionObject == NULL)
{
return CL_ERR_NULL_POINTER;
}
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)
{
goto error_return;
}
if (thisDbEntry->shouldDelete == CL_TRUE)
{
rc = CL_ERR_INVALID_HANDLE;
goto error_unlock_return;
}
*pSelectionObject = (ClSelectionObjectT)thisDbEntry->readFd;
error_unlock_return:
rc = clOsalMutexUnlock(thisDbEntry->dispatchMutex);
if (rc != CL_OK)
{
CL_DEBUG_PRINT(CL_DEBUG_ERROR,
("Mutex Unlock failed with rc = 0x%x\n",rc));
}
error_return:
if ((clHandleCheckin(databaseHandle, dispatchHandle)) != CL_OK)
{
CL_DEBUG_PRINT(CL_DEBUG_ERROR,
("clHandleCheckin failed"));
}
return rc;
}
开发者ID:NguyenHoangOC,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:56,代码来源:clDispatchApi.c
示例19: clGmsClusterLeaveAsync
/*-----------------------------------------------------------------------------
* Cluster Leave Async API
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterLeaveAsync(
CL_IN const ClGmsHandleT gmsHandle,
CL_IN const ClGmsNodeIdT nodeId)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsClusterLeaveRequestT req = {0};
ClGmsClusterLeaveResponseT *res = NULL;
CL_GMS_SET_CLIENT_VERSION( req );
rc = clHandleCheckout(gmsHandleDb, gmsHandle, (void**)&gms_instance_ptr);
if (rc != CL_OK)
{
return rc;
}
if (gms_instance_ptr == NULL)
{
return CL_GMS_RC(CL_ERR_NULL_POINTER);
}
memset(&(gms_instance_ptr->cluster_manage_callbacks), 0,
sizeof(ClGmsClusterManageCallbacksT));
req.gmsHandle = gmsHandle;
req.nodeId = nodeId;
req.sync = CL_FALSE;
clGmsMutexLock(gms_instance_ptr->response_mutex);
rc = cl_gms_cluster_leave_rmd(&req, 0 /* use def. timeout */, &res);
if ((rc != CL_OK) || (res == NULL)) /* If there was an error, res isn't allocated */
{
goto error_unlock_checkin;
}
rc = res->rc;
clHeapFree((void*)res);
error_unlock_checkin:
clGmsMutexUnlock(gms_instance_ptr->response_mutex);
if (clHandleCheckin(gmsHandleDb, gmsHandle) != CL_OK)
{
clLogError(CLM,NA,
"\nclHandleCheckin failed");
}
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:55,代码来源:clGmsApi.c
示例20: clDebugFuncInvokeCallback
ClRcT
clDebugFuncInvokeCallback(ClHandleDatabaseHandleT hHandleDB,
ClHandleT handle,
ClPtrT pData)
{
ClRcT rc = CL_OK;
ClDebugFuncGroupT *pFuncGroup = NULL;
ClUint32T i = 0;
ClDebugInvokeCookieT *pCookie = (ClDebugInvokeCookieT *) pData;
rc = clHandleCheckout(hHandleDB, handle, (void *) &pFuncGroup);
if( CL_OK != rc )
{
CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckout(): rc[0x %x]", rc));
return rc;
}
for (i = 0; i < pFuncGroup->numFunc; i++)
{
if (!strcasecmp(pFuncGroup->pFuncDescList[i].funcName,
pCookie->pCommandName))
{
pCookie->pFuncEntry = &(pFuncGroup->pFuncDescList[i]);
clHandleCheckin(hHandleDB, handle);
/*
* Specifically returning NON CL_OK, to quit the container walk as
* already found proper function name
*/
return CL_DBG_INFO_CMD_FOUND;
}
}
clHandleCheckin(hHandleDB, handle);
/*
* If you are returning non CL_OK, container walk will not proceed.
* this will break for mutiple registrations of debug commands.
*/
return rc;
}
开发者ID:rajiva,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:39,代码来源:clDebug.c
注:本文中的clHandleCheckin函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论