static void clMsgClientsTrackCallbackAsyncCallback_4_0_0(ClRcT rc, void *pIdlCookie, ClBufferHandleT inMsgHdl, ClBufferHandleT outMsgHdl) { ClIdlCookieT* pCookie = (ClIdlCookieT*)pIdlCookie; ClRcT retVal = CL_OK; ClHandleT clientHandle; SaNameT pGroupName; SaMsgQueueGroupNotificationBufferT_4_0_0 pNotification; memset(&(clientHandle), 0, sizeof(ClHandleT)); memset(&(pGroupName), 0, sizeof(SaNameT)); memset(&(pNotification), 0, sizeof(SaMsgQueueGroupNotificationBufferT_4_0_0)); retVal = clXdrUnmarshallClHandleT(inMsgHdl, &(clientHandle)); if (CL_OK != retVal) { goto L0; } retVal = clXdrUnmarshallSaNameT(inMsgHdl, &(pGroupName)); if (CL_OK != retVal) { goto L1; } retVal = clXdrUnmarshallSaMsgQueueGroupNotificationBufferT_4_0_0(inMsgHdl, &(pNotification)); if (CL_OK != retVal) { goto L2; } if (rc != CL_OK) { retVal = rc; } ((MsgCltClMsgClientsTrackCallbackAsyncCallbackT_4_0_0)(pCookie->actualCallback))(pCookie->handle, clientHandle, &(pGroupName), &(pNotification), retVal, pCookie->pCookie); goto L3; L3: L2: L1: L0: clHeapFree(pCookie); clBufferDelete(&outMsgHdl); return; }
ClRcT clMsgClientsTrackCallbackServer_4_0_0(ClEoDataT eoData, ClBufferHandleT inMsgHdl, ClBufferHandleT outMsgHdl) { ClIdlContextInfoT *pIdlCtxInfo = NULL; ClRcT rc = CL_OK; ClHandleT clientHandle; ClNameT pGroupName; SaMsgQueueGroupNotificationBufferT_4_0_0 pNotification; memset(&(clientHandle), 0, sizeof(ClHandleT)); memset(&(pGroupName), 0, sizeof(ClNameT)); memset(&(pNotification), 0, sizeof(SaMsgQueueGroupNotificationBufferT_4_0_0)); rc = clXdrUnmarshallClHandleT( inMsgHdl,&(clientHandle)); if (CL_OK != rc) { goto LL0; } rc = clXdrUnmarshallClNameT( inMsgHdl,&(pGroupName)); if (CL_OK != rc) { goto LL1; } rc = clXdrUnmarshallSaMsgQueueGroupNotificationBufferT_4_0_0( inMsgHdl,&(pNotification)); if (CL_OK != rc) { goto LL2; } pIdlCtxInfo = (ClIdlContextInfoT *)clHeapAllocate(sizeof(ClIdlContextInfoT)); if(pIdlCtxInfo == NULL) { return CL_IDL_RC(CL_ERR_NO_MEMORY); } memset(pIdlCtxInfo, 0, sizeof(ClIdlContextInfoT)); pIdlCtxInfo->idlDeferMsg = outMsgHdl; pIdlCtxInfo->inProgress = CL_FALSE; rc = clIdlSyncPrivateInfoSet(msgCltidlSyncKey, (void *)pIdlCtxInfo); if (CL_OK != rc) { clHeapFree(pIdlCtxInfo); goto L0; } rc = clMsgClientsTrackCallback_4_0_0(clientHandle, &(pGroupName), &(pNotification)); if(pIdlCtxInfo->inProgress == CL_FALSE) { clHeapFree(pIdlCtxInfo); pIdlCtxInfo = NULL; } if (CL_OK != rc) { goto L0; } rc = clXdrMarshallClHandleT(&(clientHandle), 0, 1); if (CL_OK != rc) { goto L1; } rc = clXdrMarshallClNameT(&(pGroupName), 0, 1); if (CL_OK != rc) { goto L2; } rc = clXdrMarshallSaMsgQueueGroupNotificationBufferT_4_0_0(&(pNotification), 0, 1); if (CL_OK != rc) { goto L3; } if(pIdlCtxInfo != NULL) { clHeapFree(pIdlCtxInfo); return rc; } L3: return rc; LL2: clXdrMarshallSaMsgQueueGroupNotificationBufferT_4_0_0(&(pNotification), 0, 1); LL1: clXdrMarshallClNameT(&(pGroupName), 0, 1); LL0: clXdrMarshallClHandleT(&(clientHandle), 0, 1); return rc; L0: clXdrMarshallClHandleT(&(clientHandle), 0, 1); L1: clXdrMarshallClNameT(&(pGroupName), 0, 1); L2: clXdrMarshallSaMsgQueueGroupNotificationBufferT_4_0_0(&(pNotification), 0, 1); return rc; }