📄 hxntsrc.h
字号:
PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
HX_RESULT UpdateStatistics(void);
HX_RESULT _ProcessIdle(BOOL atInterrupt = 0);
virtual HX_RESULT _ProcessIdleExt(BOOL atInterrupt = 0);
virtual HX_RESULT PreFileHeaderReadyExt(IHXValues* pHeader);
virtual HX_RESULT PostFileHeaderReadyExt(void);
virtual HX_RESULT PreHeaderCallbackExt(IHXValues* theHeader);
virtual HX_RESULT PostHeaderCallbackExt(IHXValues* theHeader);
HX_RESULT ReadPreferences(void);
HX_RESULT CreateProtocol();
HX_RESULT InitializeProtocol(void);
HX_RESULT set_proxy(const char* proxy,UINT16 port);
HX_RESULT cleanup_proxy(void);
HX_RESULT _Initialize(void);
void CalculateCurrentBuffering(void);
UINT32 AdjustEventTime(STREAM_INFO* pStreamInfo, UINT32 ulTime);
void ReBuffer(void);
void ResetASMSource(void);
BOOL IsInCloakPortList(UINT16 uPort);
BOOL IsPrefetchEnded(void);
HX_RESULT IsFaststartPushdownFullfilled(REF(UINT16) uStatusCode,
REF(UINT16) ulPercentDone);
BOOL IsRARVSource(void);
HX_RESULT GetEventFromProtocol(UINT16 usStreamNumber, CHXEvent*& theEvent);
HX_RESULT GetEventFromRecordControl(UINT16 usStreamNumber, CHXEvent*& theEvent);
// stream thinning
BOOL mServerSelRecordSupport;
BOOL mInterframeControlSupport;
BOOL mServerHasBandwidthReport;
BOOL mServerHasFrameControl;
// setup parameters...
char* m_pHost;
char* m_pPath;
char* m_pResource;
UINT16 m_uPort;
// proxy stuff
char* m_pProxy; // host string of proxy
UINT16 m_uProxyPort; // host port of proxy
BOOL m_bUseProxy; // == 1, connect to proxy first
char mClientID[64]; /* Flawfinder: ignore */
CHXSimpleList* m_pUDPPortList;
HXProtocol* m_pProto;
ULONG32 m_ulStartBuffering;
ULONG32 m_ulServerTimeOut;
ULONG32 m_ulConnectionTimeout;
float m_fReBufferPercent;
// level 1, 2 stats
INT32 m_lRAStreamNumber;
// level 3 stats
CHXSimpleList* m_pLogInfoList;
UINT32 m_ulLogInfoLength;
// authenication info.
char m_szUserName[MAX_DISPLAY_NAME]; /* Flawfinder: ignore */
char m_szPassword[MAX_DISPLAY_NAME]; /* Flawfinder: ignore */
UINT16 m_uLastBuffering;
UINT16 m_uLastStatusCode;
ULONG32 m_ulPerfectPlayDownloadTime;
// reconnect information
BOOL m_bAttemptReconnect;
char* m_pszReconnectServer;
char* m_pszReconnectProxy;
char* m_pszReconnectURL;
UINT32 m_ulReconnectProxyPort;
UINT32 m_ulReconnectServerPort;
// redirect information
char* m_pszRedirectServer;
char* m_pszRedirectResource;
char* m_pszRedirectURL;
UINT32 m_ulRedirectServerPort;
IHXPendingStatus* m_pProtocolStatus;
IHXCookies* m_pCookies;
IHXCookies2* m_pCookies2;
//////////////////////////////////////////////
// Automatic Transport Switching Support...
public:
ULONG32 m_ulUDPTimeout;
protected:
ULONG32 m_ulMulticastTimeout;
UINT32 m_ulTCPTimeout;
ULONG32 m_ulStartDataWait;
ULONG32 m_ulFirstDataArrives;
ULONG32 m_ulSendStatsMask;
ULONG32 m_ulStatsInterval;
UINT32 m_ulSeekPendingTime;
UINT32 m_ulServerVersion;
UINT32 m_ulTransportPrefMask;
UINT16 m_uProtocolType;
TransportMode m_PreferredTransport;
TransportMode m_CurrentTransport;
HX_BITFIELD m_bLossCorrection : 1;
HX_BITFIELD m_bAltURL : 1;
HX_BITFIELD m_bRTSPProtocol : 1;
HX_BITFIELD m_bDataWaitStarted : 1;
HX_BITFIELD m_bConnectionWait : 1;
BOOL m_bSendStatistics;
BOOL m_bUseUDPPort;
HX_BITFIELD m_bResendAuthenticationInfo : 1;
HX_BITFIELD m_bTimeBased : 1;
HX_BITFIELD m_bUserHasCalledResume : 1;
HX_BITFIELD m_bUserHasCalledStartInit : 1;
HX_BITFIELD m_bAtInterrupt : 1;
HX_BITFIELD m_bBruteForceReconnected : 1;
HX_BITFIELD m_bBruteForceConnectToBeDone : 1;
HX_BITFIELD m_bReconnect : 1;
BOOL m_bNoLatency;
HX_BITFIELD m_bNoLatencySet : 1;
HX_BITFIELD m_bPerfectPlayPreferenceRead : 1;
BOOL m_bPerfectPlayErrorChecked;
HX_BITFIELD m_bServerHasPerfectPlay : 1;
HX_BITFIELD m_bServerHasResend : 1;
HX_BITFIELD m_bInRetryMode : 1;
HX_BITFIELD m_bPushDownSet : 1;
HX_BITFIELD m_bRARVSource : 1;
HX_BITFIELD m_bRARVSourceVerified : 1;
PushDownStatus m_pushDownStatus;
BOOL m_bForcePerfectPlay;
BOOL m_bServerHasTransportSwitching;
BOOL m_bSeekPending;
UINT16* m_pCloakPortList;
UINT8 m_nNumberOfCloakPorts;
UINT8 m_nCurrPortIdx;
UINT16 m_uCurrCloakedPort;
PreferredTransportState m_prefTransportState;
IHXPreferredTransport* m_pPreferredTransport;
IHXPreferredTransportManager* m_pPreferredTransportManager;
ReconnectCallback* m_pReconnectCallback;
#if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY)
ReconnectCallback* m_pStatsCallback;
#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */
// PAC
IHXProxyAutoConfig* m_pPAC;
CHXSimpleList* m_pPACInfoList;
LISTPOSITION m_PACInfoPosition;
NetSourceState m_state;
friend class ReconnectCallback;
private:
IHXBufferControl* m_pBufferCtl;
IHXWatermarkBufferControl* m_pWMBufferCtl;
public:
HX_RESULT FinishSetup();
void ReSetup();
void Reset();
char* GetAltURL(BOOL& bDefault);
HX_RESULT switch_out_of_perfectplay();
HX_RESULT handleTransportSwitch(void);
HX_RESULT handleProxySwitch(HX_RESULT inError);
HX_RESULT handleRedirect(void);
HX_RESULT handleReconnect(void);
BOOL IsNetworkAvailable();
HX_RESULT AttemptReconnect();
HX_RESULT StartReconnect();
HX_RESULT ReportStats();
HX_RESULT ProcessReconnect(STREAM_INFO* pStreamInfo);
HX_RESULT EndReconnect();
HX_RESULT AddToPreReconnectEventList(STREAM_INFO* pStreamInfo, CHXEvent* pEvent);
void UpdateReconnectInfo(UINT32 ulPacketTime,
BOOL& bFirstEvent,
UINT32& ulPrevPacketTime,
UINT32& ulLargestGapInPacketTime,
UINT32& ulLastPacketTime);
char* GetHost() {return m_pHost;};
INT32 GetRAStreamNumber()
{
return m_lRAStreamNumber;
};
UINT32 GetFirstDataArriveTime()
{
return m_ulFirstDataArrives;
};
UINT32 GetLogInfo(CHXSimpleList*& pLogInfoList)
{
pLogInfoList = m_pLogInfoList;
return m_ulLogInfoLength;
};
void ReportError (HX_RESULT theErr);
HX_RESULT switch_to_next_transport(HX_RESULT incomingError);
void set_transport(TransportMode mode);
void WritePerfectPlayToRegistry();
void CreateCloakedPortList();
};
class ReconnectCallback : public IHXCallback
{
public:
HXNetSource* m_pSource;
CallbackHandle m_PendingHandle;
BOOL m_bIsStatsReportingCallback;
IHXScheduler* m_pScheduler;
UINT32 m_ulScheduleTime;
UINT32 m_ulTimeout;
BOOL m_bPaused;
ReconnectCallback(HXNetSource* pSource,
BOOL bIsStatsCallback = FALSE);
HX_RESULT ScheduleCallback(UINT32 uTimeout);
HX_RESULT PauseCallback();
HX_RESULT ResumeCallback();
HX_RESULT CancelCallback();
BOOL IsPaused() {return m_bPaused;};
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXCallback methods
*/
STDMETHOD(Func) (THIS);
protected:
~ReconnectCallback();
LONG32 m_lRefCount;
};
#endif // _HX_NET_SOURCE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -