Share via


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&#060CComMultiThreadModel&#062,
    public CComCoClass&#060CPostCatReader, &CLSID_PostCatReader&#062,
    public IDispatchImpl&#060IPostCatReader, &IID_IPostCatReader, &LIBID_CATREADEXLib&#062,
    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_