📄 hxcleng.h
字号:
/* ***** BEGIN LICENSE BLOCK *****
* Version: RCSL 1.0/RPSL 1.0
*
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file, are
* subject to the current version of the RealNetworks Public Source License
* Version 1.0 (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the RealNetworks Community Source License Version 1.0
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
* in which case the RCSL will apply. You may also obtain the license terms
* directly from RealNetworks. You may not use this file except in
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
* applicable to this file, the RCSL. Please see the applicable RPSL or
* RCSL for the rights, obligations and limitations governing use of the
* contents of the file.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the portions
* it created.
*
* This file, and the files included with this file, is distributed and made
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#ifndef _HXCLIENTENGINE_
#define _HXCLIENTENGINE_
#include "chxelst.h"
#include "hxmon.h"
#include "hxclreg.h"
#include "statinfo.h"
#include "strminfo.h"
#include "hxshtdn.h"
#include "hxupgrd.h"
#include "hxerror.h"
#if defined(HELIX_FEATURE_LITEPREFS)
#include "chxliteprefs.h"
#endif
#ifdef _UNIX
#include "hxengin.h"
#endif
class HXCommonClassFactory;
class HXScheduler;
class HXOptimizedSchedulerBase;
class HXPreferences;
class HXNetworkServices;
class HXHyperNavigate;
class HXThreadHyperNavigate;
class HXClientRegistry;
class CHXAudioSession;
class HXCoreGuiHook;
class Plugin2Handler;
class HXPluginManager;
class BaseHandler;
class HXAutoConfig;
class CHXPlayerSinkControl;
class HXCoreComm;
class HXMutex;
class HXValidator;
class HXExternalResourceManager;
class CHXCredentialsCache;
class CHXResMgr;
class HXXMLParser;
class HXCookies;
class HXCookiesHelper;
class HXPreferredTransportManager;
class HXProxyManager;
class CMediumBlockAllocator;
class HXViewSource;
class CHXMapStringToOb;
class HXOverlayManager;
class HXNetInterface;
class HXPlayer;
class HXCookies;
struct IHXClientAdviseSink;
struct IHXErrorMessages;
struct IHXCommonClassFactory;
struct IHXClientEngine;
struct IHXMimeTypeMapper;
struct IHXRegistry;
struct IHXHyperNavigate;
struct IHXPreferences;
struct IHXShutDownEverything;
struct IHXValidator;
struct IHXSiteEventHandler;
struct IHXXMLParser;
struct IHXSystemRequired;
struct IHXMultiPlayPauseSupport;
struct IHXProxyAutoConfig;
struct IHXNetInterfaces;
struct IHXBandwidthManager;
#if defined(HELIX_FEATURE_SYSTEMREQUIRED)
class HXSystemRequired : public IHXSystemRequired
{
protected:
LONG32 m_lRefCount;
public:
HXSystemRequired() {m_lRefCount = 0;}
~HXSystemRequired() {};
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXSystemRequired methods
*/
/************************************************************************
* Method:
* IHXSystemRequired::HasFeatures
* Purpose:
* Check if required features are present on the system.
* Returns:
* HXR_OK - features are here, no upgrade required;
* all features are removed from pFeatures.
* HXR_FAIL - some features are missing;
* pFeatures contains only those features
* that need upgrade.
*
*/
STDMETHOD(HasFeatures) (THIS_
IHXUpgradeCollection* pFeatures);
};
#endif /* HELIX_FEATURE_SYSTEMREQUIRED */
class HXClientEngine :
public IHXClientEngine
#if defined _UNIX && !defined _VXWORKS
, public IHXClientEngineSelector
, public IHXAsyncIOSelection
#endif
, public IHXClientEngineSetup
, public IHXInterruptState
, public IHXShutDownEverything
, public IHXOverrideDefaultServices
, public IHXErrorMessages
, public IHXClientEngineMapper
, public IHXCoreMutex
#if defined(_MACINTOSH) && defined(_CARBON) && defined(THREADS_SUPPORTED)
, public IHXMacBlitMutex
#endif
{
protected:
LONG32 m_lRefCount;
ULONG32 m_ulPlayerIndex;
INT32 m_unRegistryID;
HXClientRegistry* m_pRegistry;
HXCommonClassFactory* m_pCommonClassFactory;
IHXCommonClassFactory* m_pCommonClassFactoryOverride;
CMediumBlockAllocator* m_pAllocator;
HXScheduler* m_pScheduler;
HXOptimizedSchedulerBase* m_pOptimizedScheduler;
IHXPreferences* m_pPreferences;
#if defined(HELIX_FEATURE_NO_INTERNAL_PREFS)
IHXPreferences* m_pOrigPreferences;
#elif defined(HELIX_FEATURE_LITEPREFS)
CHXLitePrefs* m_pOrigPreferences;
#else
HXPreferences* m_pOrigPreferences;
#endif
CHXAudioSession* m_pAudioSession;
HXNetworkServices* m_pOrigNetworkServices;
IHXNetworkServices* m_pNetworkServices;
#ifdef _UNIX
IHXAsyncIOSelection* m_pAsyncIOSelection;
BOOL m_bNetworkThreading;
#endif
HXCookies* m_pCookies;
HXCookiesHelper* m_pCookiesHelper;
HXNetInterface* m_pNetInterfaces;
IHXProxyAutoConfig* m_pProxyAutoConfig;
IHXHyperNavigate* m_pHyperNavigate;
HXThreadHyperNavigate* m_pOrigHyperNavigate;
HXValidator* m_pValidator;
IHXBandwidthManager* m_pASM;
CHXPlayerSinkControl* m_pPlayerSinkControl;
CHXCredentialsCache* m_pCredentialsCache;
CHXResMgr* m_pResMgr;
HXExternalResourceManager* m_pExternalResourceManager;
HXXMLParser* m_pXMLParser;
HXViewSource* m_pViewSource;
IHXSystemRequired* m_pSystemRequired;
#if defined(_UNIX) || defined(__TCS__)
IHXSiteEventHandler* m_pSiteEventHandler;
#endif
HXProxyManager* m_pProxyManager;
HXPreferredTransportManager* m_pPreferredTransportManager;
HXOverlayManager* m_pOverlayManager;
IHXMultiPlayPauseSupport* m_pMultiPlayPauseSupport;
//List to store the plugins for information reguarding created players.
CHXSimpleList* m_pSingleLoadPlugins;
public:
#if defined(_STATICALLY_LINKED) || !defined(HELIX_FEATURE_PLUGINHANDLER2)
#if defined(HELIX_CONFIG_CONSOLIDATED_CORE)
BaseHandler* m_pPlugin2Handler;
#else /* HELIX_CONFIG_CONSOLIDATED_CORE */
HXPluginManager* m_pPlugin2Handler;
#endif /* HELIX_CONFIG_CONSOLIDATED_CORE */
#else
Plugin2Handler* m_pPlugin2Handler;
#endif /* _STATICALLY_LINKED */
HXClientEngine(void);
~HXClientEngine(void);
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXClientEngine methods
*/
/************************************************************************
* Method:
* IHXClientEngine::CreatePlayer
* Purpose:
* Creates a new IHXPlayer instance.
*
*/
STDMETHOD(CreatePlayer) (THIS_
REF(IHXPlayer*) pPlayer);
/************************************************************************
* Method:
* IHXClientEngine::ClosePlayer
* Purpose:
* Called by the engine when it is done using the player...
*
*/
STDMETHOD(ClosePlayer) (THIS_
IHXPlayer* pPlayer);
/************************************************************************
* Method:
* IHXClientEngine::GetPlayerCount
* Purpose:
* Returns the current number of IHXPlayer instances supported by
* this client engine instance.
*/
STDMETHOD_(UINT16, GetPlayerCount)(THIS);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -