2025-04-27 07:49:33 -04:00

146 lines
7.3 KiB
Plaintext

//-----------------------------------------------------------------------------
//
//
// File: aqintrnl.idl
//
// Description: IDL file that defines the internal AQueue COM interfaces.
//
// Author: Mike Swafford (MikeSwa)
//
// History:
// 7/19/99 - MikeSwa Split from aqueue.idl.
//
// Copyright (C) 1997, 1999 Microsoft Corporation
//
//-----------------------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
import "mailmsg.idl";
//---[ eDSNActions ]-----------------------------------------------------------
//
//
// Description: Possible actions for DSN Generation event
//
//
//-----------------------------------------------------------------------------
typedef [v1_enum] enum
{
DSN_ACTION_FAILURE = 0x00000001, //Generate a FAILURE DSN for FAILED recips
DSN_ACTION_FAILURE_ALL = 0x00000002, //Generate a FAILURE DSN for UNDELIVERED and FAILED recips
DSN_ACTION_DELAYED = 0x00000004, //Generate a DELAY DSN for undelivered recips
DSN_ACTION_RELAYED = 0x00000008, //Generate a RELAY DSN for delivered recips
DSN_ACTION_EXPANDED = 0x00000010, //Generate a EXPANDED DSN for expanded
DSN_ACTION_DELIVERED = 0x00000020, //Generate a DELIVERED DSN for delivered recips
DSN_ACTION_TYPE_MASK = 0x0000003F, //Mask for the bits describing the type of DSN
DSN_ACTION_DEFAULT_HDRS = 0x00000100, //If RET is not specified - default to headers only
DSN_ACTION_DEFAULT_FULL = 0x00000200, //Default to sending FULL body
DSN_ACTION_IGNORE_RET = 0x00000400, //Ignore RET and use Default specified
DSN_ACTION_CONTEXT_STORE= 0x00100000, //DSN is being generated because of store
DSN_ACTION_CONTEXT_CAT = 0x00200000, //DSN is being generated because of cat
DSN_ACTION_CONTEXT_MTA = 0x00400000, //DSN is being generated becuase of mta
} eDSNActions ;
//---[ IConnectionRetryManager ]-----------------------------------------------
//
//
// Description: Public interface that exposes methods that allow scheduled
// connections and specialized retry logic.
//
//
//-----------------------------------------------------------------------------
[
object,
uuid(B870CE2B-A755-11d2-A6A9-00C04FA3490A),
helpstring("IConnectionRetryManager Interface"),
pointer_default(unique)
]
interface IConnectionRetryManager : IUnknown
{
[helpstring("method RetryLink")] HRESULT RetryLink(
[in] DWORD cbDomainName,
[in, size_is(cbDomainName + 1)] CHAR szDomainName[],
[in] DWORD dwScheduleID,
[in] GUID guidTransportSink);
};
//---[ IConnectionRetrySink ]---------------------------------------------------
//
//
// Description: Interface used handle retry logic.
//
// Note: If the fAllowImmediateRetry is
// set to TRUE, the given <domain, schedule> will be immediately put back
// into the pool from which connections are made. If FALSE, a call to
// RetryLink() must be made before any connections will
// be allocated for the given <domain, schedule>.
//-----------------------------------------------------------------------------
[
object,
uuid(B870CE2A-A755-11d2-A6A9-00C04FA3490A),
helpstring("IConnectionRetrySink Interface"),
pointer_default(unique)
]
interface IConnectionRetrySink : IUnknown
{
//Notification when a connection is released
[helpstring("method ConnectionReleased")] HRESULT ConnectionReleased(
[in] DWORD cbDomainName,
[in, size_is(cbDomainName+1)] CHAR szDomainName[],
[in] DWORD dwDomainInfoFlags, //DomainInfo configuration Flags
[in] DWORD dwScheduleID,
[in] GUID guidRouting,
[in] DWORD dwConnectionStatus, //eConnectionStatus
[in] DWORD cFailedMessages, //# of failed message for *this* connection
[in] DWORD cTriedMessages, //# of tried messages for *this* connection
[in] DWORD cConsecutiveConnectionFailures,//# of other active connections for this domain
[out] BOOL *pfAllowImmediateRetry,
[out] FILETIME *pftNextRetryAttempt);
};
//---[ IDSNGenerationSink ]----------------------------------------------------
//
//
// Description:
// Interface that sinks the DSN generation event. Will need to be moved
// to a public idl file (along with retry/schedule sink).
//
//-----------------------------------------------------------------------------
[
object,
uuid(E6641D7D-92AA-484b-BD5D-7099478CB2FE),
helpstring("IDSNGeneration Interface"),
]
interface IDSNGenerationSink : IUnknown
{
//Synchronous interface to generation a DSN and submit it to delivery
[helpstring("method GenerateDSN")] HRESULT GenerateDSN(
[in] ISMTPServer *pISMTPServer,
[in] IMailMsgProperties *pIMailMsgProperties,
[in] DWORD dwStartDomain, //starting index used to init context
[in] DWORD dwDSNActions, //type(s) of DSN to generate
[in] DWORD dwRFC821Status, //global RFC821 status
[in] HRESULT hrStatus, //global HRESULT
[in, size_is(cbDefaultDomain+1)] LPSTR szDefaultDomain,
[in] DWORD cbDefaultDomain,
[in, size_is(cbReportingMTA+1)] LPSTR szReportingMTA, //reporting MTA of DSN
[in] DWORD cbReportingMTA, //string length of reporting MTA
[in, size_is(cbReportingMTAType+1)] LPSTR szReportingMTAType, //reporting MTA type
[in] DWORD cbReportingMTAType, //string length of reporting MTA Type
[in, size_is(cbDSNContext+1)] LPSTR szDSNContext,
[in] DWORD cbDSNContext,
[in] DWORD dwLangId, //preferred language ID to generate DSNs in
[in] DWORD dwDSNOptions, //eDSNOptions flags
[in, size_is(cbCopyNDRTo+1)] LPSTR szCopyNDRTo,
[in] DWORD cbCopyNDRTo,
[out] IMailMsgProperties **ppIMailMsgPropertiesDSN,
[out] DWORD *pdwDSNTypesGenerated,
[out] DWORD *pcRecipsDSN, //# of recipes DSN'd
[out] DWORD *pcIterationsLeft); //# of times this should be called
};