107 lines
2.2 KiB
C
107 lines
2.2 KiB
C
|
|
||
|
|
||
|
#ifndef __MSGUTILS_H__
|
||
|
#define __MSGUTILS_H__
|
||
|
|
||
|
HRESULT CreateDummyISMTPServer(
|
||
|
DWORD dwInstance,
|
||
|
LPSTR szLogFileName,
|
||
|
ISMTPServer **ppServer
|
||
|
);
|
||
|
|
||
|
HRESULT CreateStoreDriver(
|
||
|
DWORD dwInstance,
|
||
|
ISMTPServer *pServer,
|
||
|
IMailMsgStoreDriver **ppStore
|
||
|
);
|
||
|
|
||
|
HRESULT CreateUnboundMailMsg(
|
||
|
IMailMsgProperties **ppMsg
|
||
|
);
|
||
|
|
||
|
HRESULT BindMailMsg(
|
||
|
IMailMsgProperties *ppMsg,
|
||
|
IMailMsgStoreDriver *pStore,
|
||
|
IMailMsgPropertyStream *pStream,
|
||
|
HANDLE hFile
|
||
|
);
|
||
|
|
||
|
HRESULT CreateBoundMailMsg(
|
||
|
IMailMsgStoreDriver *pStore,
|
||
|
IMailMsgProperties **ppMsg
|
||
|
);
|
||
|
|
||
|
HRESULT GenerateRandomProperties(
|
||
|
IMailMsgProperties *pMsg,
|
||
|
DWORD dwNumGlobalProperties,
|
||
|
DWORD dwAvgGlobalPropertyLength,
|
||
|
DWORD dwNumRecipients,
|
||
|
DWORD dwAvgUserNameLength,
|
||
|
DWORD dwAvgDomainNameLength,
|
||
|
DWORD dwNumRecipientProperties,
|
||
|
DWORD dwAvgRecipientPropertyLength
|
||
|
);
|
||
|
|
||
|
|
||
|
class CDummySMTPServer : public ISMTPServer
|
||
|
{
|
||
|
public:
|
||
|
CDummySMTPServer(
|
||
|
DWORD dwInstance,
|
||
|
LPSTR szLogFileName
|
||
|
)
|
||
|
{
|
||
|
m_dwInstance = dwInstance;
|
||
|
if (szLogFileName)
|
||
|
lstrcpy(m_szLogFileName, szLogFileName);
|
||
|
else
|
||
|
*m_szLogFileName = '\0';
|
||
|
m_hLogFile = INVALID_HANDLE_VALUE;
|
||
|
m_ulRefCount = 1;
|
||
|
}
|
||
|
~CDummySMTPServer()
|
||
|
{
|
||
|
if (m_hLogFile != INVALID_HANDLE_VALUE)
|
||
|
CloseHandle(m_hLogFile);
|
||
|
}
|
||
|
|
||
|
HRESULT Init();
|
||
|
|
||
|
STDMETHOD(QueryInterface)(REFIID iid, void **ppvObject);
|
||
|
STDMETHOD_(ULONG, AddRef)(void) {return(InterlockedIncrement(&m_ulRefCount));};
|
||
|
STDMETHOD_(ULONG, Release) (void)
|
||
|
{
|
||
|
LONG lRefCount = InterlockedDecrement(&m_ulRefCount);
|
||
|
if (lRefCount == 0)
|
||
|
{
|
||
|
delete this;
|
||
|
}
|
||
|
|
||
|
return(lRefCount);
|
||
|
};
|
||
|
|
||
|
STDMETHOD (AllocMessage)(
|
||
|
IMailMsgProperties **ppMsg
|
||
|
);
|
||
|
|
||
|
STDMETHOD (SubmitMessage)(
|
||
|
IMailMsgProperties *pMsg
|
||
|
);
|
||
|
|
||
|
STDMETHOD (TriggerLocalDelivery)(IMailMsgProperties *pMsg, DWORD dwRecipientCount, DWORD * pdwRecipIndexes);
|
||
|
|
||
|
STDMETHOD (ReadMetabaseString)(DWORD MetabaseId, LPBYTE Buffer, DWORD * BufferSize, BOOL fSecure);
|
||
|
|
||
|
STDMETHOD (ReadMetabaseDword)(DWORD MetabaseId, DWORD * dwValue);
|
||
|
STDMETHOD (ServerStartHintFunction)();
|
||
|
STDMETHOD (ServerStopHintFunction)();
|
||
|
|
||
|
private:
|
||
|
LONG m_ulRefCount;
|
||
|
DWORD m_dwInstance;
|
||
|
char m_szLogFileName[MAX_PATH * 2];
|
||
|
HANDLE m_hLogFile;
|
||
|
};
|
||
|
|
||
|
#endif
|