本文整理汇总了C++中clHandleCheckout函数的典型用法代码示例。如果您正苦于以下问题:C++ clHandleCheckout函数的具体用法?C++ clHandleCheckout怎么用?C++ clHandleCheckout使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clHandleCheckout函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: 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
示例2: 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
示例3: 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
示例4: 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
示例5: 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
示例6: 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
示例7: 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
示例8: 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
示例9: 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
示例10: 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
示例11: 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
示例12: 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
示例13: 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
示例14: 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
示例15: clGmsClusterMemberEjectCallbackHandler
/*----------------------------------------------------------------------------
* Cluster Member Eject Callback Handler
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterMemberEjectCallbackHandler(
CL_IN ClGmsClusterMemberEjectCallbackDataT* const res)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsHandleT gmsHandle = CL_GMS_INVALID_HANDLE;
CL_ASSERT(res != NULL);
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->
cluster_manage_callbacks.clGmsMemberEjectCallback == 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->cluster_manage_callbacks.clGmsMemberEjectCallback)
(res->reason);
error_checkin_free_res:
if (clHandleCheckin(gmsHandleDb, gmsHandle))
{
clLogError(CLM,NA,
"\nclHandleCheckin failed");
}
error_free_res:
clHeapFree((void*)res);
return rc;
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:54,代码来源:clGmsApi.c
示例16: clGmsClusterMemberEject
/*-----------------------------------------------------------------------------
* Cluster Member Eject API
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterMemberEject(
CL_IN const ClGmsHandleT gmsHandle,
CL_IN const ClGmsNodeIdT nodeId,
CL_IN const ClGmsMemberEjectReasonT reason)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsClusterMemberEjectRequestT req = {0};
ClGmsClusterMemberEjectResponseT *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);
}
clGmsMutexLock( gms_instance_ptr->response_mutex);
req.gmsHandle = gmsHandle;
req.nodeId = nodeId;
req.reason = reason;
rc = cl_gms_cluster_member_eject_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,代码行数:53,代码来源:clGmsApi.c
示例17: clGmsClusterTrackStop
/*-----------------------------------------------------------------------------
* Cluster Track Stop API
*---------------------------------------------------------------------------*/
ClRcT clGmsClusterTrackStop(
CL_IN const ClGmsHandleT gmsHandle)
{
ClRcT rc = CL_OK;
struct gms_instance *gms_instance_ptr = NULL;
ClGmsClusterTrackStopRequestT req = {0};
ClGmsClusterTrackStopResponseT *res = NULL;
CL_GMS_SET_CLIENT_VERSION( req );
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);
}
req.gmsHandle = gmsHandle;
req.address.iocPhyAddress.nodeAddress = clIocLocalAddressGet();
rc = clEoMyEoIocPortGet(&(req.address.iocPhyAddress.portId));
CL_ASSERT(rc == CL_OK); /* Should really never happen */
clGmsMutexLock(gms_instance_ptr->response_mutex);
rc = cl_gms_cluster_track_stop_rmd(&req, 0 /* use def. timeout */, &res);
if ((rc != CL_OK) || (res == NULL)) /* If there was an error, res isn't allocated */
{
goto error_exit;
}
rc = res->rc;
clHeapFree((void*)res);
error_exit:
clGmsMutexUnlock(gms_instance_ptr->response_mutex);
if (clHandleCheckin(gmsHandleDb, gmsHandle) != CL_OK)
{
clLogError(CLM,NA,
"\nclHandleCheckin failed");
}
return CL_GMS_RC(rc);
}
开发者ID:mrv-communications-pilot,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:53,代码来源:clGmsApi.c
示例18: clAmsSACSIHAStateGet
ClRcT
clAmsSACSIHAStateGet(
CL_IN ClAmsClientHandleT amsHandle,
CL_IN const ClNameT *compName,
CL_IN const ClNameT *csiName,
CL_OUT ClAmsHAStateT *haState)
{
ClRcT rc;
struct ams_instance *ams_instance = NULL;
if ( !compName || !csiName || !haState)
return CL_ERR_NULL_POINTER;
/*
* Checkout the client handle
*/
if ( (rc = clHandleCheckout(
handle_database,
amsHandle,
(void *)&ams_instance))
!= CL_OK )
goto error;
/*
* Send the information to the server to
*/
if ( ( rc = _clAmsSACSIHAStateGet(
(ClNameT *)compName,
(ClNameT *)csiName,
haState ))
!= CL_OK )
goto error;
if ( (rc = clHandleCheckin(
handle_database,
amsHandle))
!= CL_OK )
goto error;
return CL_OK;
error:
return CL_AMS_RC(rc);
}
开发者ID:NguyenHoangOC,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:49,代码来源:clAmsSAClientApi.c
示例19: 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
示例20: clDebugDeregister
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;
}
开发者ID:rajiva,项目名称:SAFplus-Availability-Scalability-Platform,代码行数:45,代码来源:clDebug.c
注:本文中的clHandleCheckout函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论