#include "pch.h"
#include "AdminSession.h"
#include "AdminSessionEventSink.h"
CAdminSessionEventSink::CAdminSessionEventSink() :
m_pSession(NULL),
m_dwGITCookie(0)
{
#ifdef CAdminSessionEventSink_TRACE_CONSTRUCTION
_TRACE_BEGIN
DWORD id = GetCurrentThreadId();
_TRACE_PART2("CAdminSessionEventSink::CAdminSessionEventSink(): ThreadId = %d (0x%X)\n", id, id);
_TRACE_PART1("\tRaw pointer = 0x%08X", this);
_TRACE_PART1(", IAGCEventSink* = 0x%08X\n", static_cast<IAGCEventSink*>(this));
_TRACE_END
#endif }
void CAdminSessionEventSink::Init(CAdminSession* pSession)
{
assert(pSession);
assert(!m_pSession);
m_pSession = pSession;
GetAGCGlobal()->RegisterInterfaceInGlobal(
static_cast<IAGCEventSink*>(this), IID_IAGCEventSink, &m_dwGITCookie);
}
void CAdminSessionEventSink::Term()
{
assert(m_dwGITCookie);
GetAGCGlobal()->RevokeAllEvents(reinterpret_cast<IAGCEventSink*>(this));
GetAGCGlobal()->RevokeInterfaceFromGlobal(m_dwGITCookie);
m_dwGITCookie = 0;
}
STDMETHODIMP CAdminSessionEventSink::OnEventTriggered(IAGCEvent* pEvent)
{
assert(m_pSession);
#ifdef CAdminSessionEventSink_TRACE_OnEventTriggered
_TRACE_BEGIN
DWORD id = GetCurrentThreadId();
_TRACE_PART2("CAdminSessionEventSink::OnEventTriggered(): ThreadId = %d (0x%X)\n", id, id);
_TRACE_PART1("\tRaw pointer = 0x%08X", this);
_TRACE_PART1(", IAGCEventSink* = 0x%08X\n", static_cast<IAGCEventSink*>(this));
_TRACE_PART1("\tIAGCEvent* = 0x%08X", pEvent);
_TRACE_PART1(", refcount = %d\n", m_dwRef);
_TRACE_END
#endif m_pSession->Fire_OnEvent(pEvent);
return S_OK;
}