Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The QueryCache method is called by the server to direct the cache plug-in to search the cache for specific content.
IWMSCacheProxy.QueryCache( bstrOriginUrl As String,
pUserContext As IWMSContext,
pCommandContext As IWMSCommandContext,
pPresentationContext As IWMSContext,
lQueryType As Int32,
pCallback As IWMSCacheProxyCallback,
varContext As Object
)
Arguments
[in] String containing the origin URL. |
|
[in] IWMSContextIWMSContext Object (Visual Basic .NET) containing the User Context. |
|
[in] IWMSCommandContextIWMSCommandContext Object (Visual Basic .NET) containing the Command Context. |
|
IWMSContext object containing the Presentation Context. |
|
[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. |
[in] IWMSCacheProxyCallbackIWMSCacheProxyCallback Object (Visual Basic .NET) containing the callback function. The cache plug-in calls IWMSCacheProxyCallback.OnQueryCache to respond to a call to QueryCache. |
|
[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 Value
This method does not return a value.
Example
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.