PostCatReader.h
PostCatReader.h
//------------------------------------------------------------
//
// File: PostCatReader.h, Declaration of the CPostCatReader
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-------------------------------------------------------------
#ifndef __POSTCATREADER_H_
#define __POSTCATREADER_H_
// Main symbols
#include "resource.h"
#include "CatReadEx.h"
#include "mailmsg.h"
#include "mailmsgprops.h"
#include "smtpevent.h"
#include "seo.h"
#include "stdio.h"
#include "SinkUtil.h"
/////////////////////////////////////////////////////////////////////////////
// CPostCatReader
class ATL_NO_VTABLE CPostCatReader :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CPostCatReader, &CLSID_PostCatReader>,
public IDispatchImpl<IPostCatReader, &IID_IPostCatReader, &LIBID_CATREADEXLib>,
public IMailTransportOnPostCategorize,
public IEventIsCacheable
{
public:
CPostCatReader()
{
m_fSinkInitSuccess = FALSE;
m_fTrySinkInit = FALSE;
InitializeCriticalSection(&m_cs);
}
~CPostCatReader()
{
m_fSinkInitSuccess = FALSE;
m_fTrySinkInit = FALSE;
DeleteCriticalSection(&m_cs);
}
DECLARE_REGISTRY_RESOURCEID(IDR_POSTCATREADER)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CPostCatReader)
COM_INTERFACE_ENTRY(IPostCatReader)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IMailTransportOnPostCategorize)
COM_INTERFACE_ENTRY(IEventIsCacheable)
END_COM_MAP()
// IPostCatReader
public:
//IEventIsCachable
STDMETHOD (IsCacheable) ();
//IMailTransportOnPostCategorize
STDMETHOD (OnMessagePostCategorize)(
IMailMsgProperties *pIMailMsg,
IMailTransportNotify *pINotify,
PVOID pvNotifyContext);
HRESULT CheckIfSinkHasInitalised();
HRESULT PrintRequestedAttribsFromRecips(
IMailMsgProperties * pIMailMsgProperties,
IMailMsgPropertyManagement * pIMailMsgPropertyManagement);
HRESULT PrintRequestedAttribsFromMsg(
IMailMsgProperties * pIMailMsgProperties,
IMailMsgPropertyManagement * pIMailMsgPropertyManagement );
HRESULT PrintAttribVals(
IMailMsgPropertyManagement * pIMailMsgPropertyManagement,
IMailMsgProperties *pIMailMsgProperties,
IMailMsgRecipients *pIMailMsgRecipients,
DWORD dwRecipIndex,
CAttrEntry * pCurrent);
HRESULT HrPrintData(
DWORD dwcbData,
PBYTE pbData);
HRESULT GetAttributeValue(IMailMsgPropertyManagement * pIMailMsgPropertyManagement,
IMailMsgProperties *pIMailMsgProperties,
IMailMsgRecipients *pIMailMsgRecipients,
DWORD dwRecipIndex,
CAttrEntry * pCurrent,
DWORD dwPropertyID);
HRESULT GetAttribPropertyOffSet(
IMailMsgPropertyManagement * pIMailMsgPropertyManagement,
IMailMsgProperties *pIMailMsgProperties,
IMailMsgRecipients *pIMailMsgRecipients,
DWORD dwRecipIndex,
CAttrEntry * pCurrent,
DWORD *pdwPropIdOffset,
DWORD *pdwcValues);
HRESULT PrintAttrList(
IMailMsgPropertyManagement * pIMailMsgPropertyManagement,
IMailMsgProperties *pIMailMsgProperties,
IMailMsgRecipients *pIMailMsgRecipients,
DWORD dwRecipIndex);
private:
CAttrList m_attrList;
BOOL m_fSinkInitSuccess;
BOOL m_fTrySinkInit;
CRITICAL_SECTION m_cs;
};
#endif //__POSTCATREADER_H_