IWMSCacheProxy.QueryCacheMissPolicy (Visual Basic .NET)
.gif)
| Previous | Next |
IWMSCacheProxy.QueryCacheMissPolicy (Visual Basic .NET)
The server calls the QueryCacheMissPolicy method to query the cache plug-in for a cache-miss policy.
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
[in] IWMSContext object containing the presentation context.
pCachePluginContext
[in] Object containing a cache plug-in context.
lQueryType
[in] Member of the WMS_CACHE_QUERY_TYPE_FLAGS enumeration type that indicates why the server called IWMSCacheProxy.QueryCache. This must be a bitwise OR of one or more 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 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] pCallback
IWMSCacheProxyCallback object containing the callback function. The cache plug-in calls IWMSCacheProxyCallback.OnQueryCacheMissPolicy to respond to a call to QueryCache.
[in] varContext
Object containing a value defined by the server to identify which call to QueryCacheMissPolicy the plug-in is responding to when it calls IWMSCacheProxyCallback.OnQueryCacheMissPolicy. You must pass this value back unaltered.
Return Values
This method does not return a value.
Remarks
A proxy server must call QueryCache on the cache plug-in and receive a cache miss before it calls QueryCacheMissPolicy. A custom cache plug-in can use the WMS_CACHE_QUERY_TYPE_FLAGS enumeration type in the lQueryType parameter to direct the implementation of a cache-miss policy.
Example Code
Imports Microsoft.WindowsMediaServices.Interop
Imports System.Runtime.InteropServices
Public Sub QueryCacheMissPolicy(ByVal OriginUrl As String, _
ByVal UserContext As IWMSContext, _
ByVal CommandContext As IWMSCommandContext, _
ByVal PresentationContext As IWMSContext, _
ByVal CachePluginContext As Object, _
ByVal lQueryType As Integer, _
ByVal Callback As IWMSCacheProxyCallback, _
ByVal varContext As Object) _
Implements IWMSCacheProxy.QueryCacheMissPolicy
Dim nOpenFlag As Integer
Dim nGCI As Integer
Dim nReverseProxy As Integer
Dim ci As ContentInfo
Dim ciRP As ContentInfo
Dim Response As WMS_CACHE_QUERY_MISS_RESPONSE
Dim ContentInfoContext As IWMSContext
Try
nOpenFlag = WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_OPEN
nGCI = lQueryType And WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_GET_CONTENT_INFO
nReverseProxy = lQueryType & WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_REVERSE_PROXY
' The ContentInfo class is user-defined and includes
' information about a cached item.
ci = New ContentInfo(OriginUrl, Nothing)
' An open request was issued.
If (nOpenFlag And lQueryType) <> 0 Then
' Retrieve content information for the normal proxy mode.
If nReverseProxy = 0 Then
ci.CacheProxyCallback = Callback
ci.varContext = varContext
CacheProxyServer.GetContentInformation(OriginUrl, _
PresentationContext, _
Nothing, _
Nothing, _
Me, _
ci)
Else
' Reverse proxy mode:
' Map the requested URL to the reverse proxy URL.
' The call to the user-defined GetContentInfo() searches
' a reverse proxy ContentInfo object for a
' "ReverseProxy" string.
ciRP = Nothing
GetContentInfo(OriginUrl, ciRP)
Response = WMS_CACHE_QUERY_MISS_RESPONSE.WMS_CACHE_QUERY_MISS_PLAY_BROADCAST
If (ciRP.ContentType And 1) = 0 Then
' Play the content as a broadcast stream.
Response = WMS_CACHE_QUERY_MISS_RESPONSE.WMS_CACHE_QUERY_MISS_PLAY_BROADCAST
Else
' Play the content on demand.
Response = WMS_CACHE_QUERY_MISS_RESPONSE.WMS_CACHE_QUERY_MISS_PLAY_ON_DEMAND
End If
' Create a content information context. The
' GetContentInfoContext() function is user-defined.
ContentInfoContext = Nothing
GetContentInfoContext(ci, ContentInfoContext)
' Call OnQueryCacheMissPolicy.
Callback.OnQueryCacheMissPolicy(0, _
Response, _
ciRP.CacheUrl, _
Nothing, _
ContentInfoContext, _
varContext)
End If
End If
If (nGCI And lQueryType) <> 0 Then
' Forward the request upstream.
Response = WMS_CACHE_QUERY_MISS_RESPONSE.WMS_CACHE_QUERY_MISS_FORWARD_REQUEST
ContentInfoContext = Nothing
GetContentInfoContext(ci, ContentInfoContext)
Callback.OnQueryCacheMissPolicy(0, _
Response, _
OriginUrl, _
Nothing, _
ContentInfoContext, _
varContext)
End If
' A downstream cache proxy server propagated a remote
' cache proxy event. Forward the event to an upstream server.
If (lQueryType And WMS_CACHE_QUERY_TYPE_FLAGS.WMS_CACHE_QUERY_CACHE_EVENT) <> 0 Then
Callback.OnQueryCacheMissPolicy(0, _
Response, _
Nothing, _
Me, _
Nothing, _
varContext)
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 |