123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 |
- //*****************************************************************************
- //
- // 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 );
- };
|