Leaked source code of windows server 2003
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.
 
 
 
 
 
 

441 lines
18 KiB

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName: streamCache.idl
//
// Abstract: Cache/Proxy Interface definition
//
//*****************************************************************************
cpp_quote("//*****************************************************************************")
cpp_quote("//")
cpp_quote("// Microsoft Windows Media")
cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("// Automatically generated by Midl from streamCache.idl" )
cpp_quote("//")
cpp_quote("// DO NOT EDIT THIS FILE.")
cpp_quote("//")
cpp_quote("//*****************************************************************************")
import "objidl.idl";
import "nsscore.idl";
import "DataContainerVersion.idl";
import "event.idl";
import "WMSProxy.idl";
interface IWMSCacheProxy;
interface IWMSCacheProxyCallback;
interface IWMSCacheProxyServer;
interface IWMSCacheProxyServerCallback;
interface IWMSCacheItemDescriptor;
interface IWMSCacheItemCollection;
cpp_quote( "EXTERN_GUID( IID_IWMSCacheProxy, 0x2E34AB83,0x0D3D,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSCacheProxyCallback, 0x2E34AB84,0x0D3D,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSCacheProxyServer, 0x68F2A550,0xD815,0x11D2,0xBE,0xF6,0x00,0xA0,0xC9,0x5E,0xC3,0x43 );" )
cpp_quote( "EXTERN_GUID( IID_IWMSCacheProxyServerCallback, 0x68F2A551,0xD815,0x11D2,0xBE,0xF6,0x00,0xA0,0xC9,0x5E,0xC3,0x43 );" )
cpp_quote( "EXTERN_GUID( IID_IWMSCacheItemDescriptor, 0xC3CBA330,0xAC05,0x11D2,0xBE,0xF0,0x00,0xA0,0xC9,0x5E,0xC3,0x43 );" )
cpp_quote( "EXTERN_GUID( IID_IWMSCacheItemCollection, 0xE6E05D80,0xF45C,0x11D2,0xBE,0xFE,0x00,0xA0,0xC9,0x5E,0xC3,0x43 );" )
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_QUERY_MISS_RESPONSE
{
WMS_CACHE_QUERY_MISS_SKIP,
WMS_CACHE_QUERY_MISS_DISCONNECT,
WMS_CACHE_QUERY_MISS_REDIRECT,
WMS_CACHE_QUERY_MISS_REDIRECT_TO_PROXY,
WMS_CACHE_QUERY_MISS_PLAY_BROADCAST,
WMS_CACHE_QUERY_MISS_PLAY_ON_DEMAND,
WMS_CACHE_QUERY_MISS_FORWARD_REQUEST,
WMS_CACHE_QUERY_MISS_PROCESS_REQUEST
} WMS_CACHE_QUERY_MISS_RESPONSE;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_QUERY_RESPONSE
{
WMS_CACHE_QUERY_HIT_PLAY_ON_DEMAND,
WMS_CACHE_QUERY_HIT_PLAY_BROADCAST,
WMS_CACHE_QUERY_HIT_PROCESS_REQUEST,
WMS_CACHE_QUERY_MISS
} WMS_CACHE_QUERY_RESPONSE;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_VERSION_COMPARE_RESPONSE
{
WMS_CACHE_VERSION_FAIL_TO_CHECK_VERSION,
WMS_CACHE_VERSION_CACHE_STALE,
WMS_CACHE_VERSION_CACHE_UP_TO_DATE,
} WMS_CACHE_VERSION_COMPARE_RESPONSE;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_CONTENT_TYPE_FLAGS
{
WMS_CACHE_CONTENT_TYPE_BROADCAST = 0x1, // else on-demand
WMS_CACHE_CONTENT_TYPE_PLAYLIST = 0x2
} WMS_CACHE_CONTENT_TYPE_FLAGS;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_QUERY_TYPE_FLAGS
{
WMS_CACHE_QUERY_OPEN = 0x1,
WMS_CACHE_QUERY_GET_CONTENT_INFO = 0x2,
WMS_CACHE_QUERY_CACHE_EVENT = 0x4,
WMS_CACHE_QUERY_REVERSE_PROXY = 0x8,
WMS_CACHE_QUERY_LOCAL_EVENT = 0x10
} WMS_CACHE_QUERY_TYPE_FLAGS;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_CONTENT_DOWNLOAD_FLAGS
{
WMS_CONTENT_DOWNLOAD_ABORT_IF_BCAST = 0x1
} WMS_CACHE_CONTENT_DOWNLOAD_FLAGS;
///////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_CACHE_REMOTE_EVENT_FLAGS
{
WMS_CACHE_REMOTE_OPEN = 0x1,
WMS_CACHE_REMOTE_CLOSE = 0x2,
WMS_CACHE_REMOTE_LOG = 0x4
} WMS_CACHE_REMOTE_EVENT_FLAGS;
#if (__midl >= 501)
midl_pragma warning( disable: 2279 )
#endif
//////////////////////////////////////////////////////////////////////////////
//
// This is built by a cache plugin.
// It is called by the server's cache manager.
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(2E34AB83-0D3D-11d2-9EEE-006097D2D7CF),
version(9.0),
helpstring("Contains methods that administer a cache. This interface is implemented by a cache / proxy plug-in and called by the server.")
]
interface IWMSCacheProxy : IUnknown
{
[helpstring("Called by the server to direct the plug-in to search the cache for specific content.")] HRESULT
QueryCache(
[in] BSTR bstrOriginUrl,
[in] IWMSContext *pUserContext,
[in] IWMSCommandContext *pCommandContext,
[in] IWMSContext *pPresentationContext,
[in] long lQueryType,
[in] IWMSCacheProxyCallback *pCallback,
[in] VARIANT varContext
);
[helpstring("Called by the server to direct the plug-in to specify its cache-miss policy.")] HRESULT
QueryCacheMissPolicy(
[in] BSTR bstrOriginUrl,
[in] IWMSContext *pUserContext,
[in] IWMSCommandContext *pCommandContext,
[in] IWMSContext *pPresentationContext,
[in] IUnknown *pCachePluginContext,
[in] long lQueryType,
[in] IWMSCacheProxyCallback *pCallback,
[in] VARIANT varContext
);
//////////////////////////////////////////////////////////
[helpstring("Called by the server to remove a specific cache item.")] HRESULT
RemoveCacheItem(
[in] BSTR bstrOriginUrl,
[in] IWMSCacheProxyCallback *pCallback,
[in] VARIANT varContext
);
[helpstring("Called by the server to remove all content from the cache.")] HRESULT
RemoveAllCacheItems(
[in] IWMSCacheProxyCallback *pCallback,
[in] VARIANT varContext
);
[helpstring("Adds content to the cache.")] HRESULT
AddCacheItem(
[in] BSTR bstrOriginUrl,
[in] BSTR bstrPrestuffUrl,
[in] long lExpiration,
[in] long lBandwidth,
[in] long lRemoteEventFlags,
[in] IWMSCacheProxyCallback *pCallback,
[in] VARIANT varContext
);
// not used by the cache manager, just used for object model
[helpstring("Called by the server to retrieve a Boolean value indicating whether the cache has adequate storage for a specific content item.")] HRESULT
QuerySpaceForCacheItem(
[in] long lContentSizeLow,
[in] long lContentSizeHigh,
[out] VARIANT_BOOL *pvarfSpaceAvail
);
[helpstring("Called by the server to retrieve information about a specific cache item.")] HRESULT
FindCacheItem(
[in] BSTR bstrOriginUrl,
[out] IWMSCacheItemDescriptor **ppCacheItemDescriptor
);
[helpstring("Called by the server to create an IWMSCacheItemCollection object and retrieve a pointer to it.")] HRESULT
CreateCacheItemCollection(
[out] IWMSCacheItemCollection **ppCacheItemCollection
);
//////////////////////////////////////////////////////////
[helpstring("Called by the server when a particular piece of content is finished being streamed from the cache.")] HRESULT
OnCacheClientClose(
[in] HRESULT resultHr,
[in] IWMSContext *pUserContext,
[in] IWMSContext *pPresentationContext
);
};
#if (__midl >= 501)
midl_pragma warning( default: 2279 )
#endif
//////////////////////////////////////////////////////////////////////////////
//
// This is built by the server's cache manager.
// It is called by a cache plugin.
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(2E34AB84-0D3D-11d2-9EEE-006097D2D7CF),
version(9.0),
helpstring("Contains methods that enable a cache / proxy plug-in to respond to calls that the server makes through the IWMSCacheProxy interface. This interface is implemented by the server and called by a cache / proxy plug-in.")
]
interface IWMSCacheProxyCallback : IUnknown
{
[helpstring("Called by the plug-in to respond when the server calls IWMSCacheProxy::QueryCache.")] HRESULT
OnQueryCache(
[in] long lHr, // HRESULT
[in] WMS_CACHE_QUERY_RESPONSE Response,
[in] BSTR bstrCacheUrl,
[in] IWMSContext *pContentInfo,
[in] IUnknown *pCachePluginContext,
[in] VARIANT varContext
);
[helpstring("Called by the plug-in to respond when the server calls IWMSCacheProxy::QueryCacheMissPolicy.")] HRESULT
OnQueryCacheMissPolicy(
[in] long lHr, // HRESULT
[in] WMS_CACHE_QUERY_MISS_RESPONSE CacheMissPolicy,
[in] BSTR bstrUrl,
[in] IWMSProxyContext * pProxyContext,
[in] IWMSContext *pContentInfo,
[in] VARIANT varContext
);
//////////////////////////////////////////////////////////
[helpstring("Called by the plug-in to respond when the server calls IWMSCacheProxy::RemoveCacheItem.")] HRESULT
OnRemoveCacheItem(
[in] long lHr, // HRESULT
[in] VARIANT varContext
);
[helpstring("Called by the plug-in to respond when the server calls IWMSCacheProxy::RemoveAllCacheItems.")] HRESULT
OnRemoveAllCacheItems(
[in] long lHr, // HRESULT
[in] VARIANT varContext
);
[helpstring("Called by the plug-in to respond when the server calls IWMSCacheProxy::AddCacheItem.")] HRESULT
OnAddCacheItem(
[in] long lHr, // HRESULT
[in] IWMSCacheItemDescriptor *pCacheItemDescriptor,
[in] VARIANT varServerContext
);
};
//////////////////////////////////////////////////////////////////////////////
//
// This is built by the server's cache manage.
// It is called by a cache plugin.
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(68F2A550-D815-11D2-BEF6-00A0C95EC343),
version(9.0),
helpstring("Contains methods that validate client authorization, retrieve information about cached content, determine whether the content is current, and download content to a cache. This interface is implemented by the server and called by a cache / proxy plug-in.")
]
interface IWMSCacheProxyServer : IUnknown
{
[helpstring("Called by the plug-in to retrieve content information.")] HRESULT
GetContentInformation(
[in] BSTR bstrOriginUrl,
[in] IWMSContext *pPresentationContext,
[in] IWMSCacheProxy *pICacheProxy,
[in, optional] IWMSProxyContext *pIProxyContext,
[in, optional] IWMSCacheProxyServerCallback *pCallback,
[in, optional] VARIANT varContext
);
[helpstring("Called by the plug-in to determine whether content is up to date.")] HRESULT
CompareContentInformation(
[in] BSTR bstrOriginUrl,
[in] IWMSContext *pContentInfo,
[in] IWMSContext *pPresentationContext,
[in] IWMSCacheProxy *pICacheProxy,
[in, optional] IWMSProxyContext *pIProxyContext,
[in, optional] IWMSCacheProxyServerCallback *pCallback,
[in, optional] VARIANT varContext
);
[helpstring("Called by the plug-in to download content to a cache.")] HRESULT
DownloadContent(
[in] BSTR bstrOriginUrl,
[in] BSTR bstrCacheUrl,
[in] long lBandwidth,
[in] long lQuotaLow,
[in] long lQuotaHigh,
[in] long lBitFlags,
[in] IWMSCacheProxy *pICacheProxy,
[in, optional] IWMSProxyContext *pIProxyContext,
[in, optional] IWMSCacheProxyServerCallback *pCallback,
[in, optional] VARIANT varContext
);
[helpstring("Called by the plug-in to stop the download process.")] HRESULT
CancelDownloadContent(
[in] IWMSContext *pArchiveContext,
[in, optional] IWMSCacheProxyServerCallback *pCallback,
[in, optional] VARIANT varContext
);
};
//////////////////////////////////////////////////////////////////////////////
//
// This is built by the cache plugin.
// It is called by the server's cache manager.
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(68F2A551-D815-11D2-BEF6-00A0C95EC343),
version(9.0),
helpstring("Contains methods that enable a cache / proxy plug-in to respond to calls that the server makes through the IWMSCacheProxyServer interface. This interface is implemented by a cache / proxy plug-in and called by the server.")
]
interface IWMSCacheProxyServerCallback : IUnknown
{
[helpstring("Called by the server to respond when the plug-in calls IWMSCacheProxyServer::GetContentInformation.")] HRESULT
OnGetContentInformation(
[in] long lHr, // HRESULT
[in] IWMSContext *pContentInfo,
[in] VARIANT varContext
);
[helpstring("Called by the server to respond when the plug-in calls IWMSCacheProxyServer::CompareContentInformation.")] HRESULT
OnCompareContentInformation(
[in] long lHr, // HRESULT
[in] WMS_CACHE_VERSION_COMPARE_RESPONSE CompareResponse,
[in] IWMSContext *pNewContentInfo,
[in] VARIANT varContext
);
[helpstring("Called by the server to provide progress when the plug-in calls IWMSCacheProxyServer::DownloadContent.")] HRESULT
OnDownloadContentProgress(
[in] long lHr, // HRESULT
[in] WMS_RECORD_PROGRESS_OPCODE opCode,
[in] IWMSContext *pArchiveContext,
[in] VARIANT varContext
);
[helpstring("Called by the server when media items have finished downloading to the cache.")] HRESULT
OnDownloadContentFinished(
[in] long lHr, // HRESULT
[in] SAFEARRAY(VARIANT) psaArchiveContexts,
[in] VARIANT varContext
);
[helpstring("Called by the server to respond when the plug-in calls IWMSCacheProxyServer::CancelDownloadContent.")] HRESULT
OnCancelDownloadContent(
[in] long lHr, // HRESULT
[in] VARIANT varContext
);
};
//////////////////////////////////////////////////////////////////////////////
//
// This is built by the cache plugin.
// It is used by the ObjectModel (& Admin) to get information about
// what is currently cached.
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(C3CBA330-AC05-11D2-BEF0-00A0C95EC343),
version(9.0),
helpstring("Retrieves the size, version number, expiration date, and URL of cached content. This interface is implemented by a cache / proxy plug-in and called by the server.")
]
interface IWMSCacheItemDescriptor : IUnknown
{
[helpstring("Retrieves the URL on the origin server from which the cached content was obtained.")] HRESULT
GetOriginUrl( [out] BSTR *pbstrOriginUrl );
[helpstring("Retrieves the URL identifying the location of the cached content on the server.")] HRESULT
GetCacheUrl( [out] BSTR *pbstrCacheUrl );
[helpstring("Retrieves information about the cached content.")] HRESULT
GetContentInformation( [out] IWMSContext **ppContentInfo );
[helpstring("Retrieves the size of the content, in bytes.")] HRESULT
GetContentSize( [out] long *plContentSizeLow, [out] long *plContentSizeHigh );
};
//////////////////////////////////////////////////////////////////////////////
//
// This is built by a plugin.
// It is used by the ObjectModel (& Admin) to get information about
// what is currently being cached.
//
// It is the plugins choice wrt how to implement the cache item collection
// In order to give the cache flexibility, it is possible that we could have
// items disappear in this enumeration, i.e. GetItem will return NULL, or
// have the count grow ....
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(E6E05D80-F45C-11D2-BEFE-00A0C95EC343),
version(9.0),
helpstring("Contains a collection of IWMSCacheItemDescriptor objects. This interface is implemented by a cache / proxy plug-in and called by the server.")
]
interface IWMSCacheItemCollection : IUnknown
{
[helpstring("Retrieves the number of items in the collection.")] HRESULT
GetCount( [out] long* plNumCacheItemDescriptors );
[helpstring("Retrieves a specific item from the collection.")] HRESULT
GetItem( [in] long lIndex, [out] IWMSCacheItemDescriptor **ppCacheItemDescriptor );
};