IWMSCacheProxyServerCallback.OnCompareContentInformation (C#)
The OnCompareContentInformation method is called by the server to respond when a cache plug-in calls IWMSCacheProxyServer.CompareContentInformation.
void IWMSCacheProxyServerCallback.OnCompareContentInformation(
int lHr,
WMS_CACHE_VERSION_COMPARE_RESPONSE CompareResponse,
IWMSContext pNewContentInfo,
object varContext
);
Arguments
[in] int indicating whether the call to IWMSCacheProxyServer.CompareContentInformation succeeded. |
|
[in] Member of the WMS_CACHE_VERSION_COMPARE_RESPONSE enumeration type indicating the server response. This must be one of the following values. |
Value |
Description |
---|---|
WMS_CACHE_VERSION_FAIL_TO_CHECK_VERSION |
There was a problem in checking the version. The cache plug-in should either delete the cached content, or try to compare versions again. |
WMS_CACHE_VERSION_CACHE_STALE |
The content is out of date. The cache plug-in must delete the cached content. |
WMS_CACHE_VERSION_CACHE_UP_TO_DATE |
The content is current. The content can be streamed. |
[in] IWMSContextIWMSContext Object (C#) containing a Content Description Context. The context is associated with the URL passed when the plug-in calls CompareContentInformation. |
|
[in] object containing a value defined by the plug-in when it called IWMSCacheProxyServer.CompareContentInformation. For example, your plug-in can use this parameter to persist state information. The server does not alter this value and passes it back when calling OnCompareContentInformation. |
Return Value
This method does not return a value. To report an error, the plug-in can throw a COMException object to the server. If the plug-in uses the IWMSEventLogIWMSEventLog Object (C#) to log error information, it is recommended that it throw NS_E_PLUGIN_ERROR_REPORTED (0xC00D157D). Typically, the server attempts to make plug-in error information available to the server object model, the Windows Event Viewer, and the troubleshooting list in the details pane of the Windows Media Services MMC. However, if the plug-in uses the IWMSEventLog object to send custom error information to the Windows Event Viewer, throwing NS_E_PLUGIN_ERROR_REPORTED stops the server from also logging to the event viewer. For more information about plug-in error information, see Identifying Plug-in Errors.
Example
using Microsoft.WindowsMediaServices.Interop;
using System.Runtime.InteropServices;
void IWMSCacheProxyServerCallback.OnCompareContentInformation(
int lHr,
WMS_CACHE_VERSION_COMPARE_RESPONSE CompareResponse,
IWMSContext pNewContentInfo,
object varContext)
{
try
{
IWMSContext pContentInfo= pNewContentInfo;
// Set the response equal to a cache miss.
WMS_CACHE_QUERY_RESPONSE Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_MISS;
// Retrieve the user-defined ContentInfo object
// from the varContext parameter.
ContentInfo ci = (ContentInfo)varContext;
// The call to IWMSCacheProxyServer.CompareContentInfo succeeded.
if(lHr==0)
{
switch (CompareResponse)
{
// The content has expired. Remove it from the DataSet object.
case WMS_CACHE_VERSION_COMPARE_RESPONSE.WMS_CACHE_VERSION_CACHE_STALE:
{
RemoveEntryFromDatabase(ci,true);
}
break;
// The content is current.
case WMS_CACHE_VERSION_COMPARE_RESPONSE.WMS_CACHE_VERSION_CACHE_UP_TO_DATE:
{
// Broadcast content.
if((ci.ContentType & 1 )!=0)
{
Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_HIT_PLAY_BROADCAST;
}
// On-demand content.
else
{
Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_HIT_PLAY_ON_DEMAND;
}
// Update the database with the new information.
RemoveEntryFromDatabase(ci,false);
GetContentInfoFromContext(pNewContentInfo,ref ci);
UpdateTable(ci);
GetContentInfoContext(ci,out pContentInfo);
}
break;
// The server failed to check version information.
case WMS_CACHE_VERSION_COMPARE_RESPONSE.WMS_CACHE_VERSION_FAIL_TO_CHECK_VERSION:
{
}
break;
default:
break;
}
// Specify the cache URL. A basic starting point searches for
// the :// character sequence in the URL. If this sequence is
// not found, prefix the URL with file://.
int nIndex = ci.CacheUrl.IndexOf("://");
string strCacheUrl = ci.CacheUrl;
if(nIndex==-1)
{
strCacheUrl = string.Format("file://{0}",ci.CacheUrl);
}
// Send the response to the server.
ci.CacheProxyCallback.OnQueryCache(0,
Response,
strCacheUrl,
pContentInfo,
null,
ci.varContext);
}
}
catch(Exception e)
{
throw new COMException();
}
return;
}
Requirements
Reference: Add a reference to Microsoft.WindowsMediaServices.
Namespace: Microsoft.WindowsMediaServices.Interop.
Assembly: Microsoft.WindowsMediaServices.dll.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.