INSTANCESINK.H


/******************************************************************************\
********************************************************************************
* Filename: InstanceSink.h
*
* Description: Sink for Instance Events
*
* This file is provided as part of the Microsoft Transaction Server
* Software Development Kit
*
*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) 1997 Microsoft Corporation, All rights reserved
********************************************************************************
\******************************************************************************/

#ifndef __INSTANCESINK_H__
#define __INSTANCESINK_H__

#include "resource.h" // main symbols

CComBSTR GuidToBstr(REFGUID guid);

class CMtsSpy;

/////////////////////////////////////////////////////////////////////////////
// CInstanceSink
class ATL_NO_VTABLE CInstanceSink :
public CMtsSink,
public IMtsInstanceEvents
{
public:
CInstanceSink(CMtsSpy * pSpy)
{
m_pSpy = pSpy;
}

CInstanceSink()
{
m_pSpy = NULL;
}

DECLARE_NOT_AGGREGATABLE(CInstanceSink)
DECLARE_GET_CONTROLLING_UNKNOWN()

BEGIN_COM_MAP(CInstanceSink)
COM_INTERFACE_ENTRY(IMtsInstanceEvents)
COM_INTERFACE_ENTRY_CHAIN(CMtsSink)
END_COM_MAP()

virtual REFIID GetIID(){return IID_IMtsInstanceEvents;}
STDMETHODIMP GetSinkType(EventEnum * e){*e = Instance;return S_OK;}

STDMETHODIMP OnObjectCreate(LONGLONG perfCount, REFGUID guidActivity, REFCLSID clsid, REFGUID tsid, MTS_OBJID ObjectID)
{
m_pSpy -> AddEventToList(perfCount, _TEXT("OnObjectCreate"), m_sPackageName);
WCHAR id[16];
wsprintfW(id,L"0x%08X", ObjectID);

CComBSTR sGuidActivity = GuidToBstr(guidActivity);
CComBSTR sClsid = GuidToBstr(clsid);
CComBSTR sTsid = GuidToBstr(tsid);

m_pSpy -> AddParamValueToList(L"ObjectID", id);
m_pSpy -> AddParamValueToList(L"guidActivity", sGuidActivity);
m_pSpy -> AddParamValueToList(L"clsid", sClsid);
m_pSpy -> AddParamValueToList(L"tsid", sTsid);
IF_AUDIT_DO(OnObjectCreate)(perfCount,
sGuidActivity,
sClsid,
sTsid,
ObjectID);

return S_OK;
}

STDMETHODIMP OnObjectRelease(LONGLONG perfCount, MTS_OBJID ObjectID)
{
WCHAR p1[32];
wsprintfW(p1, L"ObjectID: %ld", ObjectID);
m_pSpy -> AddEventToList(perfCount, _TEXT("OnObjectRelease"), m_sPackageName);
WCHAR id[16];
wsprintfW(id,L"0x%08X", ObjectID);
m_pSpy -> AddParamValueToList(L"ObjectID", id);
IF_AUDIT_DO(OnObjectRelease)(perfCount,
ObjectID);

return S_OK;
}

};

#endif //__INSTANCESINK_H__