IWMSBroadcastPublishingPoint::get_AllowStreamSplitting

banner art

Previous Next

IWMSBroadcastPublishingPoint::get_AllowStreamSplitting

The get_AllowStreamSplitting method retrieves a Boolean value that indicates whether the stream can be split. A cache proxy device can split a stream to minimize network bandwidth. A cache proxy device splits a broadcast stream by making a single connection to an upstream server and then copying the incoming packets to multiple downstream clients.

Syntax

  HRESULT get_AllowStreamSplitting(
  
  
  VARIANT_BOOL*
    
  pVal
  

  );

Parameters

pVal

[out] Pointer to a VARIANT_BOOL that indicates whether the stream can be split.

Return Values

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Return code Number Description
E_POINTER 0x80004003 pVal is a NULL pointer argument.
NS_E_PUBLISHING_POINT_REMOVED 0xC00D145AL The publishing point has already been removed.

Remarks

The default value is VARIANT_TRUE. This allows the proxy server to split a broadcast so that, regardless of how many clients are connected to the proxy to receive the broadcast, there is only one connection from the proxy server to the origin server. If you set this value to VARIANT_FALSE, there must be one connection between the proxy and the origin server for each client that is connected to the proxy server.

Example Code

#include <windows.h>
#include <atlbase.h>    // Includes CComBSTR and CComVariant.
#include "wmsserver.h"

// Declare variables and interfaces.
IWMSServer                    *pServer;
IWMSPublishingPoints          *pPubPoints;
IWMSPublishingPoint           *pPubPoint;
IWMSBroadcastPublishingPoint  *pBCPubPoint;

HRESULT         hr;
VARIANT_BOOL    bVal;
CComVariant     varIndex;
long            lCount;

// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
                      NULL,
                      CLSCTX_ALL,
                      IID_IWMSServer,
                      (void **)&pServer);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the IWMSPublishingPoints
// interface and retrieve the number of publishing points.
hr = pServer->get_PublishingPoints(&pPubPoints);
if (FAILED(hr)) goto EXIT;
hr = pPubPoints->get_Count(&lCount);
if (FAILED(hr)) goto EXIT;

// Retrieve each publishing point and query the
// IWMSBroadcastPublishingPoint interface.
for (long x = 0; x < lCount; x++)
{
    varIndex = x;
    hr = pPubPoints->get_Item(varIndex, &pPubPoint);
    if (FAILED(hr)) goto EXIT;

    // Retrieve the type of publishing point.
    WMS_PUBLISHING_POINT_TYPE pptType;
    hr = pPubPoint->get_Type(&pptType);
    if (FAILED(hr)) goto EXIT;

    if (pptType == WMS_PUBLISHING_POINT_TYPE_BROADCAST)
    {
        hr = pPubPoint->QueryInterface(IID_IWMSBroadcastPublishingPoint,
                                      (void **)&pBCPubPoint);
        if (FAILED(hr)) goto EXIT;

        // Retrieve a Boolean value that indicates whether the
        // stream can be split.
        hr = pBCPubPoint->get_AllowStreamSplitting(&bVal);
        if (FAILED(hr)) goto EXIT;

        pBCPubPoint->Release();
    }

    // Release temporary COM objects.
    pPubPoint->Release();
}

EXIT:
    // TODO: Release temporary COM objects and uninitialize COM.

Requirements

Header: wmsserver.h.

Library: WMSServerTypeLib.dll.

Platform: Windows ServerĀ 2003 family, Windows ServerĀ 2008 family.

See Also

Previous Next