239 lines
6.4 KiB
C++
239 lines
6.4 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
#ifndef __QCSUB_H__
|
|
#define __QCSUB_H__
|
|
|
|
#include "resource.h" // main symbols
|
|
|
|
/*C+C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C
|
|
Class: CQCSub
|
|
Summary: Queued Components Events Subscriber
|
|
C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C-C*/
|
|
class ATL_NO_VTABLE CQCSub :
|
|
public CSysLCESub,
|
|
public IComQCEvents
|
|
{
|
|
public:
|
|
CQCSub(CComSpy * pSpy)
|
|
{
|
|
m_pSpy = pSpy;
|
|
}
|
|
|
|
CQCSub()
|
|
{
|
|
m_pSpy = NULL;
|
|
}
|
|
|
|
DECLARE_NOT_AGGREGATABLE(CQCSub)
|
|
DECLARE_GET_CONTROLLING_UNKNOWN()
|
|
|
|
BEGIN_COM_MAP(CQCSub)
|
|
COM_INTERFACE_ENTRY(IComQCEvents)
|
|
COM_INTERFACE_ENTRY_CHAIN(CSysLCESub)
|
|
END_COM_MAP()
|
|
|
|
virtual EventEnum EventType() { return QC; }
|
|
virtual REFCLSID EventCLSID() { return CLSID_ComServiceEvents; }
|
|
virtual REFIID EventIID() { return IID_IComQCEvents; }
|
|
|
|
STDMETHODIMP OnQCRecord
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
ULONG64 objid,
|
|
WCHAR szQueue[60],
|
|
REFGUID guidMsgId,
|
|
REFGUID guidWorkFlowId,
|
|
HRESULT msmqhr)
|
|
{
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCRecord", GuidToBstr(pInfo->guidApp));
|
|
|
|
|
|
CComBSTR bstrGuidMsgId = GuidToBstr(guidMsgId);
|
|
CComBSTR bstrGuidWorkFlowId = GuidToBstr(guidWorkFlowId);
|
|
|
|
WCHAR szObjectID[32];
|
|
wsprintfW(szObjectID, L"%#016I64X", objid);
|
|
m_pSpy->AddParamValueToList(L"ObjectID", szObjectID);
|
|
|
|
m_pSpy->AddParamValueToList(L"Queue", szQueue);
|
|
m_pSpy->AddParamValueToList(L"MsgId", bstrGuidMsgId);
|
|
m_pSpy->AddParamValueToList(L"WorkflowId", bstrGuidWorkFlowId);
|
|
|
|
WCHAR szHr[16];
|
|
wsprintfW(szHr, L"%#08X", msmqhr);
|
|
m_pSpy->AddParamValueToList(L"MSMQ HR", szHr);
|
|
|
|
IF_AUDIT_DO(OnQCRecord)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
szObjectID,
|
|
szQueue,
|
|
bstrGuidMsgId,
|
|
bstrGuidWorkFlowId,
|
|
msmqhr);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP OnQCQueueOpen
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
WCHAR szQueue[60],
|
|
ULONG64 QueueID,
|
|
HRESULT msmqhr)
|
|
{
|
|
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCQueueOpen", GuidToBstr(pInfo->guidApp));
|
|
m_pSpy->AddParamValueToList(L"Queue", szQueue);
|
|
|
|
WCHAR szQueueID[32];
|
|
wsprintfW(szQueueID, L"%#016I64X", QueueID);
|
|
m_pSpy->AddParamValueToList(L"QueueID", szQueueID);
|
|
|
|
WCHAR p1[16];
|
|
wsprintfW(p1, L"%#08X", msmqhr);
|
|
m_pSpy->AddParamValueToList(L"MSMQ HR", p1);
|
|
|
|
IF_AUDIT_DO(OnQCQueueOpen)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
szQueue,
|
|
szQueueID,
|
|
msmqhr);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP OnQCReceive
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
ULONG64 QueueID,
|
|
REFGUID guidMsgId,
|
|
REFGUID guidWorkFlowId,
|
|
HRESULT msmqhr)
|
|
{
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCReceive", GuidToBstr(pInfo->guidApp));
|
|
|
|
CComBSTR bstrGuidMsgId = GuidToBstr(guidMsgId);
|
|
CComBSTR bstrGuidWorkFlowId = GuidToBstr(guidWorkFlowId);
|
|
|
|
|
|
WCHAR szQueueID[32];
|
|
wsprintfW(szQueueID, L"%#016I64X", QueueID);
|
|
m_pSpy->AddParamValueToList(L"QueueID", szQueueID);
|
|
|
|
m_pSpy->AddParamValueToList(L"MsgId", bstrGuidMsgId);
|
|
m_pSpy->AddParamValueToList(L"WorkflowId", bstrGuidWorkFlowId);
|
|
|
|
WCHAR p1[16];
|
|
wsprintfW(p1, L"%#08X", msmqhr);
|
|
m_pSpy->AddParamValueToList(L"MSMQ HR", p1);
|
|
|
|
|
|
IF_AUDIT_DO(OnQCReceive)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
szQueueID,
|
|
bstrGuidMsgId,
|
|
bstrGuidWorkFlowId,
|
|
msmqhr);
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP OnQCReceiveFail
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
ULONG64 QueueID,
|
|
HRESULT msmqhr)
|
|
{
|
|
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCReceiveFail", GuidToBstr(pInfo->guidApp));
|
|
|
|
WCHAR szQueueID[32];
|
|
wsprintfW(szQueueID, L"%#016I64X", QueueID);
|
|
m_pSpy->AddParamValueToList(L"QueueID", szQueueID);
|
|
|
|
WCHAR p1[16];
|
|
wsprintfW(p1, L"%#08X", msmqhr);
|
|
m_pSpy->AddParamValueToList(L"MSMQ HR", p1);
|
|
|
|
IF_AUDIT_DO(OnQCReceiveFail)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
szQueueID,
|
|
msmqhr);
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP OnQCMoveToReTryQueue
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
REFGUID guidMsgId,
|
|
REFGUID guidWorkFlowId,
|
|
ULONG RetryIndex)
|
|
{
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCMoveToReTryQueue", GuidToBstr(pInfo->guidApp));
|
|
|
|
CComBSTR bstrGuidMsgId = GuidToBstr(guidMsgId);
|
|
CComBSTR bstrGuidWorkFlowId = GuidToBstr(guidWorkFlowId);
|
|
|
|
m_pSpy->AddParamValueToList(L"MsgId", bstrGuidMsgId);
|
|
m_pSpy->AddParamValueToList(L"WorkflowId", bstrGuidWorkFlowId);
|
|
|
|
WCHAR p1[16];
|
|
wsprintfW(p1, L"%#08X", RetryIndex);
|
|
m_pSpy->AddParamValueToList(L"ReTry Index", p1);
|
|
|
|
IF_AUDIT_DO(OnQCMoveToReTryQueue)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
bstrGuidMsgId,
|
|
bstrGuidWorkFlowId,
|
|
RetryIndex);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP OnQCMoveToDeadQueue
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
REFGUID guidMsgId,
|
|
REFGUID guidWorkFlowId)
|
|
{
|
|
CComBSTR bstrGuidMsgId = GuidToBstr(guidMsgId);
|
|
CComBSTR bstrGuidWorkFlowId = GuidToBstr(guidWorkFlowId);
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCMoveToDeadQueue", GuidToBstr(pInfo->guidApp));
|
|
m_pSpy->AddParamValueToList(L"MsgId", bstrGuidMsgId);
|
|
m_pSpy->AddParamValueToList(L"WorkflowId", bstrGuidWorkFlowId);
|
|
|
|
IF_AUDIT_DO(OnQCMoveToDeadQueue)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
bstrGuidMsgId,
|
|
bstrGuidWorkFlowId);
|
|
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP OnQCPlayback
|
|
(COMSVCSEVENTINFO * pInfo,
|
|
ULONG64 objid,
|
|
REFGUID guidMsgId,
|
|
REFGUID guidWorkFlowId,
|
|
HRESULT msmqhr)
|
|
{
|
|
|
|
m_pSpy->AddEventToList(pInfo->perfCount, L"OnQCPlayback", GuidToBstr(pInfo->guidApp));
|
|
|
|
CComBSTR bstrGuidMsgId = GuidToBstr(guidMsgId);
|
|
CComBSTR bstrGuidWorkFlowId = GuidToBstr(guidWorkFlowId);
|
|
|
|
WCHAR szObjectID[32];
|
|
wsprintfW(szObjectID, L"%#016I64X", objid);
|
|
m_pSpy->AddParamValueToList(L"ObjectID", szObjectID);
|
|
|
|
m_pSpy->AddParamValueToList(L"MsgId", bstrGuidMsgId);
|
|
m_pSpy->AddParamValueToList(L"WorkflowId", bstrGuidWorkFlowId);
|
|
|
|
WCHAR p1[16];
|
|
wsprintfW(p1, L"%#08X", msmqhr);
|
|
m_pSpy->AddParamValueToList(L"MSMQ HR", p1);
|
|
|
|
IF_AUDIT_DO(OnQCPlayback)(pInfo->perfCount, GuidToBstr(pInfo->guidApp),
|
|
szObjectID,
|
|
bstrGuidMsgId,
|
|
bstrGuidWorkFlowId,
|
|
msmqhr);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
};
|
|
|
|
#endif //__QCSUB_H__
|