You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
3.5 KiB
179 lines
3.5 KiB
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name :
|
|
logpublic.cxx
|
|
|
|
Abstract:
|
|
Public Log COM Object
|
|
|
|
Author:
|
|
|
|
Saurab Nog (SaurabN) 25-March-1998
|
|
|
|
|
|
--*/
|
|
|
|
#include "precomp.hxx"
|
|
#include "comlog.hxx"
|
|
|
|
CInetLogPublic::CInetLogPublic(
|
|
VOID
|
|
):
|
|
m_pContext ( NULL),
|
|
m_refCount ( 0)
|
|
|
|
{
|
|
InitializeListHead(&m_ListEntry);
|
|
|
|
} // CInetLogPublic::CInetLogPublic
|
|
|
|
|
|
CInetLogPublic::~CInetLogPublic(
|
|
VOID
|
|
)
|
|
{
|
|
|
|
} // CInetLogPublic::~CInetLogPublic
|
|
|
|
|
|
ULONG
|
|
CInetLogPublic::AddRef(
|
|
VOID
|
|
)
|
|
{
|
|
DWORD dwRefCount = InterlockedIncrement( &m_refCount );
|
|
return(dwRefCount);
|
|
} // CInetLogPublic::AddRef
|
|
|
|
|
|
ULONG
|
|
CInetLogPublic::Release(
|
|
VOID
|
|
)
|
|
{
|
|
DWORD dwRefCount = InterlockedDecrement( &m_refCount );
|
|
|
|
if (dwRefCount == 0)
|
|
{
|
|
EnterCriticalSection( &COMLOG_CONTEXT::sm_listLock );
|
|
RemoveEntryList(&m_ListEntry);
|
|
LeaveCriticalSection( &COMLOG_CONTEXT::sm_listLock );
|
|
|
|
delete this;
|
|
}
|
|
|
|
return(dwRefCount);
|
|
|
|
} // CInetLogPublic::Release
|
|
|
|
|
|
HRESULT
|
|
CInetLogPublic::QueryInterface(
|
|
REFIID riid,
|
|
VOID **ppObj
|
|
)
|
|
{
|
|
if ( riid == IID_IUnknown ||
|
|
riid == IID_IInetLogPublic)
|
|
{
|
|
|
|
*ppObj = (CInetLogPublic *)this;
|
|
AddRef();
|
|
return(NO_ERROR);
|
|
}
|
|
else
|
|
{
|
|
return(E_NOINTERFACE);
|
|
}
|
|
} // CInetLogPublic::QueryInterface
|
|
|
|
|
|
HRESULT
|
|
CInetLogPublic::SetLogInstance(
|
|
LPSTR szInstance
|
|
)
|
|
{
|
|
PLIST_ENTRY listEntry;
|
|
COMLOG_CONTEXT* pContext = NULL;
|
|
HRESULT hr = E_FAIL;
|
|
|
|
//
|
|
// Search through the context list for a matching context
|
|
//
|
|
|
|
EnterCriticalSection( &COMLOG_CONTEXT::sm_listLock );
|
|
|
|
for ( listEntry = COMLOG_CONTEXT::sm_ContextListHead.Flink;
|
|
listEntry != &COMLOG_CONTEXT::sm_ContextListHead;
|
|
listEntry = listEntry->Flink )
|
|
{
|
|
|
|
pContext = (COMLOG_CONTEXT*)CONTAINING_RECORD(
|
|
listEntry,
|
|
COMLOG_CONTEXT,
|
|
m_ContextListEntry
|
|
);
|
|
|
|
if (0 != strcmp(pContext->m_strInstanceName.QueryStr(), szInstance))
|
|
{
|
|
pContext = NULL;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( NULL != pContext)
|
|
{
|
|
if (NULL != m_pContext)
|
|
{
|
|
RemoveEntryList(&m_ListEntry);
|
|
}
|
|
|
|
m_pContext = pContext;
|
|
|
|
InsertTailList(
|
|
&m_pContext->m_PublicListEntry,
|
|
&m_ListEntry
|
|
);
|
|
|
|
hr = S_OK;
|
|
}
|
|
|
|
LeaveCriticalSection( &COMLOG_CONTEXT::sm_listLock );
|
|
return hr;
|
|
}
|
|
|
|
HRESULT
|
|
CInetLogPublic::LogInformation(
|
|
IInetLogInformation *pLogObj
|
|
)
|
|
{
|
|
if (NULL == m_pContext)
|
|
{
|
|
return (E_HANDLE);
|
|
}
|
|
|
|
m_pContext->LogInformation(pLogObj);
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT
|
|
CInetLogPublic::LogCustomInformation(
|
|
IN DWORD cCount,
|
|
IN PCUSTOM_LOG_DATA pCustomLogData,
|
|
IN LPSTR szHeaderSuffix
|
|
)
|
|
{
|
|
if (NULL == m_pContext)
|
|
{
|
|
return (E_HANDLE);
|
|
}
|
|
|
|
m_pContext->LogCustomInformation(cCount, pCustomLogData, szHeaderSuffix);
|
|
return S_OK;
|
|
}
|
|
|