IWMSCacheProxy.QueryCache (Visual Basic .NET)
Previous | Next |
IWMSCacheProxy.QueryCache (Visual Basic .NET)
The QueryCache method is called by the server to direct the cache plug-in to search the cache for specific content.
Syntax
Parameters
bstrOriginUrl
[in] String containing the origin URL.
pUserContext
[in] IWMSContext object containing the user context.
pCommandContext
[in] IWMSCommandContext object containing the command context.
pPresentationContext
IWMSContext object containing the presentation context.
lQueryType
[in] Member of the WMS_CACHE_QUERY_TYPE_FLAGS enumeration type that indicates why the server called IWMSCacheProxy.QueryCache. This must be one of the following values.
Value | Description |
WMS_CACHE_QUERY_OPEN | A client using a downstream proxy requested content. |
WMS_CACHE_QUERY_GET_CONTENT_INFO | A downstream proxy requested information about content cached on the remote computer. |
WMS_CACHE_QUERY_CACHE_EVENT | A cache event notice is being sent upstream. If the WMS_CACHE_QUERY_LOCAL_EVENT is set, the cache event was generated by the local computer. Otherwise, it was sent by a downstream proxy server. |
WMS_CACHE_QUERY_REVERSE_PROXY | A downstream server is configured to be a reverse proxy server. If a cache proxy plug-in supports reverse proxy, it can use this flag to determine whether it must map client requests to an upstream server farm. |
WMS_CACHE_QUERY_LOCAL_EVENT | The local server is generating an event to send upstream. |
pCallback
[in] IWMSCacheProxyCallback object containing the callback function. The cache plug-in calls IWMSCacheProxyCallback.OnQueryCache to respond to a call to QueryCache.
varContext
[in] Object containing a value defined by the server to identify which call to QueryCache the plug-in is responding to when it calls IWMSCacheProxyCallback.OnQueryCache. You must pass this value back unaltered.
Return Values
This method does not return a value.
Example Code
Imports Microsoft.WindowsMediaServices.Interop Imports System.Runtime.InteropServices Public Sub QueryCache(ByVal OriginUrl As String, _ ByVal UserContext As IWMSContext, _ ByVal CommandContext As IWMSCommandContext, _ ByVal PresentationContext As IWMSContext, _ ByVal lQueryType As Integer, _ ByVal Callback As IWMSCacheProxyCallback, _ ByVal varContext As Object) _ Implements IWMSCacheProxy.QueryCache Dim nFlag As Integer Dim nOpen As Integer Dim nGCI As Integer Dim nReverseProxy As Integer Dim Context As IWMSContext Dim Response As WMS_CACHE_QUERY_RESPONSE Dim ci As ContentInfo Dim bQueryCache As Boolean Dim bOnDemand As Boolean Dim now As Date Dim CacheUrl As String Dim nCacheEvent As Integer Dim nLocalEvent As Integer Try ' Intialize default values. bQueryCache = True bOnDemand = True ' Either a get content information (GCI) or an open call is made. If nOpen <> 0 Or nGCI <> 0 Then ' Retrieve a user-defined ContentInfo object. This ' object stores information about an item of ' cached content. GetContentInfo(OriginUrl, ci) ci.CacheProxyCallback = Callback ci.varContext = varContext ' Allocate a new content information context GetContentInfoContext(ci, Context) ' This is not a reverse proxy, and content has been cached. If ci.CacheUrl <> "" And nReverseProxy = 0 Then ' Convert the current time to UTC time. If the ' content has not expired, declare either a ' broadcast or on-demand cache hit. now = DateTime.Now.ToUniversalTime If (ci.ContentType And 1) <> 0 Then Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_HIT_PLAY_BROADCAST bOnDemand = False Else Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_HIT_PLAY_ON_DEMAND bOnDemand = True End If Else ' The content has expired. If nOpen <> 0 Then bQueryCache = False End If End If If bQueryCache = True Then ' Retrieve the cache URL and call OnQueryCache. CacheUrl = ci.CacheUrl If bOnDemand = True Then CacheUrl = String.Format("file://", ci.CacheUrl) End If Callback.OnQueryCache(0, Response, CacheUrl, Context, Nothing, varContext) Else ' The content has expired. Call CompareContentInformation ' (for open requests only). The CacheProxyServer object ' is your plug-in's implementation of the ' IWMSCacheProxyServer object. CacheProxyServer.CompareContentInformation(OriginUrl, _ Context, _ PresentationContext, _ Me, _ Nothing, _ Me, _ ci) End If Else ' The request is not a GCI or an open call. ' Determine whether it is an event. nCacheEvent = lQueryType And WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_CACHE_EVENT nLocalEvent = lQueryType And WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_LOCAL_EVENT ' Declare a cache miss and ask the server to ' forward the request. If nCacheEvent <> 0 Or nLocalEvent <> 0 Then Response = WMS_CACHE_QUERY_RESPONSE.WMS_CACHE_QUERY_MISS Callback.OnQueryCache(0, Response, OriginUrl, Nothing, Nothing, varContext) End If End If Catch Throw New COMException() End Try End Sub
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.
See Also
Previous | Next |