Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
ptable.h
Abstract:
This module contains the export of the property table
Author:
Keith Lau (keithlau@microsoft.com)
Revision History:
keithlau 07/05/97 created
--*/
#ifndef _PTABLE_H_
#define _PTABLE_H_
#include "props.h"
// Enumerated type for HP access of individual properties
typedef enum _MSG_PTABLE_ITEMS { _PI_MSG_CLIENT_DOMAIN = 0, _PI_MSG_CLIENT_IP, _PI_MSG_MAIL_FROM, _PI_MSG_MSG_STATUS, _PI_MSG_MSG_STREAM, _PI_MSG_RCPT_TO, _PI_MSG_SERVER_IP, _PI_MSG_MAX_PI
} MSG_PTABLE_ITEMS;
typedef enum _DEL_PTABLE_ITEMS { _PI_DEL_CLIENT_DOMAIN = 0, _PI_DEL_CLIENT_IP, _PI_DEL_CURRENT_RCPT, _PI_DEL_MAIL_FROM, _PI_DEL_MAILBOX_PATH, _PI_DEL_MSG_STATUS, _PI_DEL_MSG_STREAM, _PI_DEL_RCPT_TO, _PI_DEL_SECURITY_TOKEN, _PI_DEL_SERVER_IP, _PI_DEL_MAX_PI
} DEL_PTABLE_ITEMS;
extern char *rgszMessagePropertyNames[_PI_MSG_MAX_PI]; extern char *rgszDeliveryPropertyNames[_PI_DEL_MAX_PI];
//
// CGenericPTable and CGenericCache are all defined in props.h
//
class CPerMessageCache : public CGenericCache { public: CPerMessageCache(LPVOID pvDefaultContext) : CGenericCache(pvDefaultContext) { m_rgpdMessagePropertyData[0].pContext = NULL; m_rgpdMessagePropertyData[0].pCacheData = (LPVOID)&m_psClientDomain; m_rgpdMessagePropertyData[1].pContext = NULL; m_rgpdMessagePropertyData[1].pCacheData = (LPVOID)&m_psClientIP; m_rgpdMessagePropertyData[2].pContext = NULL; m_rgpdMessagePropertyData[2].pCacheData = (LPVOID)&m_psMailFrom; m_rgpdMessagePropertyData[3].pContext = NULL; m_rgpdMessagePropertyData[3].pCacheData = (LPVOID)&m_pdMsgStatus; m_rgpdMessagePropertyData[4].pContext = NULL; m_rgpdMessagePropertyData[4].pCacheData = (LPVOID)&m_pdStream; m_rgpdMessagePropertyData[5].pContext = NULL; m_rgpdMessagePropertyData[5].pCacheData = (LPVOID)&m_psRcptTo; m_rgpdMessagePropertyData[6].pContext = NULL; m_rgpdMessagePropertyData[6].pCacheData = (LPVOID)&m_psServerIP;
// Default context
m_rgpdMessagePropertyData[7].pContext = pvDefaultContext; m_rgpdMessagePropertyData[7].pCacheData = pvDefaultContext; } ~CPerMessageCache() {}
LPPROPERTY_DATA GetCacheBlock() { return(m_rgpdMessagePropertyData); }
private: CPropertyValueDWORD m_pdStream; // IStream to message file
CPropertyValueDWORD m_pdMsgStatus; // Message status
CPropertyValueString m_psMailFrom; // Mail from string
CPropertyValueString m_psRcptTo; // Rcpt to (MULTISZ)
CPropertyValueString m_psClientDomain; // Client domain per EHLO
CPropertyValueString m_psClientIP; // Client IP address
CPropertyValueString m_psServerIP; // Server IP address
// The extra slot is for the default accessor
PROPERTY_DATA m_rgpdMessagePropertyData[_PI_MSG_MAX_PI + 1]; };
class CPerRecipientCache : public CGenericCache { public: CPerRecipientCache(LPVOID pvDefaultContext) : CGenericCache(pvDefaultContext) { m_rgpdRecipientPropertyData[0].pContext = NULL; m_rgpdRecipientPropertyData[0].pCacheData = (LPVOID)&m_psClientDomain; m_rgpdRecipientPropertyData[1].pContext = NULL; m_rgpdRecipientPropertyData[1].pCacheData = (LPVOID)&m_psClientIP; m_rgpdRecipientPropertyData[2].pContext = NULL; m_rgpdRecipientPropertyData[2].pCacheData = (LPVOID)&m_psCurrentRcpt; m_rgpdRecipientPropertyData[3].pContext = NULL; m_rgpdRecipientPropertyData[3].pCacheData = (LPVOID)&m_psMailFrom; m_rgpdRecipientPropertyData[4].pContext = NULL; m_rgpdRecipientPropertyData[4].pCacheData = (LPVOID)&m_psMailboxPath; m_rgpdRecipientPropertyData[5].pContext = NULL; m_rgpdRecipientPropertyData[5].pCacheData = (LPVOID)&m_pdMsgStatus; m_rgpdRecipientPropertyData[6].pContext = NULL; m_rgpdRecipientPropertyData[6].pCacheData = (LPVOID)&m_pdStream; m_rgpdRecipientPropertyData[7].pContext = NULL; m_rgpdRecipientPropertyData[7].pCacheData = (LPVOID)&m_psRcptTo; m_rgpdRecipientPropertyData[8].pContext = NULL; m_rgpdRecipientPropertyData[8].pCacheData = (LPVOID)&m_pdSecurityToken; m_rgpdRecipientPropertyData[9].pContext = NULL; m_rgpdRecipientPropertyData[9].pCacheData = (LPVOID)&m_psServerIP;
// Default context
m_rgpdRecipientPropertyData[10].pContext = pvDefaultContext; m_rgpdRecipientPropertyData[10].pCacheData = pvDefaultContext; } ~CPerRecipientCache() {}
LPPROPERTY_DATA GetCacheBlock() { return(m_rgpdRecipientPropertyData); }
private: CPropertyValueDWORD m_pdStream; // IStream to message file
CPropertyValueDWORD m_pdMsgStatus; // Message status
CPropertyValueDWORD m_pdSecurityToken; // hImpersonation
CPropertyValueString m_psMailFrom; // Mail from string
CPropertyValueString m_psMailboxPath; // Mailbox path
CPropertyValueString m_psRcptTo; // Rcpt to (MULTISZ)
CPropertyValueString m_psClientDomain; // Client domain per EHLO
CPropertyValueString m_psClientIP; // Client IP address
CPropertyValueString m_psCurrentRcpt; // Current recipient
CPropertyValueString m_psServerIP; // Server IP address
// The extra slot is for the default accessor
PROPERTY_DATA m_rgpdRecipientPropertyData[_PI_DEL_MAX_PI + 1]; };
class CMessagePTable : public CGenericPTable { public: CMessagePTable(CGenericCache *pCache); ~CMessagePTable() {}
LPPTABLE GetPTable() { return(&m_PTable); }
private: PTABLE m_PTable; };
class CDeliveryPTable : public CGenericPTable { public: CDeliveryPTable(CGenericCache *pCache); ~CDeliveryPTable() {}
LPPTABLE GetPTable() { return(&m_PTable); }
private: PTABLE m_PTable; };
#endif
|