|
|
//-----------------------------------------------------------------------------
//
//
// File: msgrefadm.cpp
//
// Description:
// Implements CAsyncAdminMsgRefQueue class
//
// Author: Mike Swafford (MikeSwa)
//
// History:
// 12/7/2000 - MikeSwa Created
//
// Copyright (C) 2000 Microsoft Corporation
//
//-----------------------------------------------------------------------------
#include "aqprecmp.h"
#include "msgrefadm.h"
#include "asyncadm.inl"
//---[ CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueNDR ]-----------------------
//
//
// Description:
// Wraps call to NDR MsgRef
// Parameters:
// *pIUnknown - IUnkown of Msgref
// Returns:
// S_OK on success
// History:
// 12/7/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueNDR( IUnknown *pIUnknownMsg) { TraceFunctEnterEx((LPARAM) this, "CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueNDR"); HRESULT hr = S_OK; CMsgRef *pmsgref = NULL;
_ASSERT(pIUnknownMsg);
hr = pIUnknownMsg->QueryInterface(IID_CMsgRef, (void **) &pmsgref); _ASSERT(SUCCEEDED(hr) && "IUnknownMsg Must be a CMsgRef!!"); if (FAILED(hr)) { ErrorTrace((LPARAM) this, "QI for MsgRef failed with hr 0x%08X", hr); goto Exit; }
//
// Attempt to NDR message
//
hr = pmsgref->HrQueueAdminNDRMessage(NULL);
Exit: if (pmsgref) pmsgref->Release();
TraceFunctLeave(); return hr; }
//---[ CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueSilent ]--------------------
//
//
// Description:
// Wrapper function to silently delete a message from a queue
// Parameters:
// *pIUnknown - IUnkown of Msgref
// Returns:
// S_OK on success
// History:
// 12/7/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueSilent( IUnknown *pIUnknownMsg) { TraceFunctEnterEx((LPARAM) this, "CAsyncAdminMsgRefQueue::HrDeleteMsgFromQueueSilent"); HRESULT hr = S_OK; CMsgRef *pmsgref = NULL;
_ASSERT(pIUnknownMsg);
hr = pIUnknownMsg->QueryInterface(IID_CMsgRef, (void **) &pmsgref); _ASSERT(SUCCEEDED(hr) && "IUnknownMsg Must be a CMsgRef!!"); if (FAILED(hr)) { ErrorTrace((LPARAM) this, "QI for MsgRef failed with hr 0x%08X", hr); goto Exit; }
//
// Attempt to remove the message from the queue
//
hr = pmsgref->HrRemoveMessageFromQueue(NULL);
Exit: if (pmsgref) pmsgref->Release();
TraceFunctLeave(); return hr; }
//---[ CAsyncAdminMsgRefQueue::HrFreezeMsg ]-----------------------------------
//
//
// Description:
// Wrapper to freeze a pmsgref
// Parameters:
// *pIUnknown - IUnkown of Msgref
// Returns:
// S_OK on success
// History:
// 12/7/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrFreezeMsg(IUnknown *pIUnknownMsg) { TraceFunctEnterEx((LPARAM) this, "CAsyncAdminMsgRefQueue::HrFreezeMsg"); HRESULT hr = S_OK; CMsgRef *pmsgref = NULL;
_ASSERT(pIUnknownMsg);
hr = pIUnknownMsg->QueryInterface(IID_CMsgRef, (void **) &pmsgref); _ASSERT(SUCCEEDED(hr) && "IUnknownMsg Must be a CMsgRef!!"); if (FAILED(hr)) { ErrorTrace((LPARAM) this, "QI for MsgRef failed with hr 0x%08X", hr); goto Exit; }
//
// Attempt to freeze the message
//
pmsgref->GlobalFreezeMessage();
Exit: if (pmsgref) pmsgref->Release();
TraceFunctLeave(); return hr; }
//---[ CAsyncAdminMsgRefQueue::HrThawMsg ]-------------------------------------
//
//
// Description:
// Wrapper function to thaw a message
// Parameters:
// *pIUnknown - IUnkown of Msgref
// Returns:
// S_OK on success
// History:
// 12/7/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrThawMsg(IUnknown *pIUnknownMsg) { TraceFunctEnterEx((LPARAM) this, "AsyncAdminMsgRefQueue::HrThawMsg"); HRESULT hr = S_OK; CMsgRef *pmsgref = NULL;
_ASSERT(pIUnknownMsg);
hr = pIUnknownMsg->QueryInterface(IID_CMsgRef, (void **) &pmsgref); _ASSERT(SUCCEEDED(hr) && "IUnknownMsg Must be a CMsgRef!!"); if (FAILED(hr)) { ErrorTrace((LPARAM) this, "QI for MsgRef failed with hr 0x%08X", hr); goto Exit; }
//
// Attempt to thaw message
//
pmsgref->GlobalThawMessage();
Exit: if (pmsgref) pmsgref->Release();
TraceFunctLeave(); return hr; }
//---[ CAsyncAdminMsgRefQueue::HrGetStatsForMsg ]------------------------------
//
//
// Description:
// Wrapper function to fill in the CAQStats struct for a message
// Parameters:
// *pIUnknown - IUnkown of Msgref
// *paqstats - Ptr to aqstats struction to fill in.
// Returns:
// S_OK on success
// History:
// 12/7/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrGetStatsForMsg( IUnknown *pIUnknownMsg, CAQStats *paqstats) { TraceFunctEnterEx((LPARAM) this, "CAsyncAdminMsgRefQueue::HrGetStatsForMsg"); HRESULT hr = S_OK; CMsgRef *pmsgref = NULL;
_ASSERT(pIUnknownMsg); _ASSERT(paqstats);
hr = pIUnknownMsg->QueryInterface(IID_CMsgRef, (void **) &pmsgref); _ASSERT(SUCCEEDED(hr) && "IUnknownMsg Must be a CMsgRef!!"); if (FAILED(hr)) { ErrorTrace((LPARAM) this, "QI for MsgRef failed with hr 0x%08X", hr); goto Exit; }
//
// Attempt to get stats from MsgRef
//
pmsgref->GetStatsForMsg(paqstats);
Exit: if (pmsgref) pmsgref->Release();
TraceFunctLeave(); return hr; }
//---[ CAsyncAdminMsgRefQueue::HrInternalQuerySupportedActions ]---------------
//
//
// Description:
// Returns the actions and filters that this implementation supports
// Parameters:
// pdwSupportedActions - QAPI MsgActions that this queue suppprts
// pdwSupportedFilterFlags - QAPI filter flags that this queue supports
// Returns:
// S_OK on success
// History:
// 12/12/2000 - MikeSwa Created
//
//-----------------------------------------------------------------------------
HRESULT CAsyncAdminMsgRefQueue::HrInternalQuerySupportedActions( DWORD *pdwSupportedActions, DWORD *pdwSupportedFilterFlags) { TraceFunctEnterEx((LPARAM) this, "CAsyncAdminMsgRefQueue::HrInternalQuerySupportedActions"); HRESULT hr = S_OK;
//
// This queue implementation supports all of the default flags.
//
hr = QueryDefaultSupportedActions(pdwSupportedActions, pdwSupportedFilterFlags);
return hr; }
|