📄 hxcleng.h
字号:
/* ***** BEGIN LICENSE BLOCK *****
* Source last modified: $Id: hxcleng.h,v 1.13.2.2 2004/07/09 02:05:40 hubbe Exp $
*
* Portions Copyright (c) 1995-2004 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 (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (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.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL") in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your version of
* this file only under the terms of the GPL, and not to allow others
* to use your version of this file under the terms of either the RPSL
* or RCSL, indicate your decision by deleting the provisions above
* and replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient may
* use your version of this file under the terms of any one of the
* RPSL, the RCSL or the GPL.
*
* 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);
/************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -