Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
iislbs.hxx
Abstract:
Definition of Load balancing structures
Author:
Philippe Choquier (phillich)
--*/
#if !defined( _IISLBS_HXX )
#define _IISLBS_HXX
#include <iislbh.hxx>
#define PERFMON_SLEEP_TIME (10*1000)
#define USER_TO_KERNEL_INTERVAL (60*1000)
#define STOP_PERFMON_THREAD_TIMEOUT (140*1000)
class CPerfmonThreadControlBlock { public: CAllocString m_ServerName; HANDLE m_hStopEvent; };
class CKernelIpMapHelper : public CKernelIpMapMinHelper {
public: CKernelIpMapHelper(); BOOL Init();
LPWSTR GetServerName( UINT i ) { return m_ServerNames.GetEntry( i ); }
BOOL SetPublicIpList( CIPMap* pIpMap ); BOOL StringToIpEndpoint( LPWSTR pNew, CKernelIpEndpoint* pIp ); BOOL IpEndpointToString( CKernelIpEndpoint* pIp, LPWSTR pAddr, DWORD cAddr ); BOOL AddServer( LPWSTR pNew ); BOOL RemoveServer( UINT i );
BOOL StopServerThread( DWORD iServer, DWORD dwTimeOut ); BOOL StartServerThread( DWORD iServer );
// private IP list management
BOOL CheckAndAddPrivateIp( CKernelIpEndpoint* pEndpoint, BOOL fAddIfNotPresent, LPUINT piFound );
VOID ResetPrivateIpList() { m_PrivateIpList.Reset(); }
DWORD PrivateIpListCount() { return m_PrivateIpList.GetUsed() / sizeof(CKernelIpEndpoint); }
BOOL EnumPrivateIpList( UINT iIndex, CKernelIpEndpoint** ppEndpoint );
private: CStrPtrXBF m_ServerNames; CPtrXBF m_PerfmonThreadHandle; CPtrXBF m_PerfmonThreadStopEvent; CStoreXBF m_PrivateIpList; } ;
// list of computers , load
// list of public IP addresses
// list of counters : as CComputerPerfCounters
// array (computers)(public IP addresses->private IP address | load )
// one thread per computer to query perfmon counters, wait on stop event
// control block : ptr to computer name, array
BOOL KernelConfigToIpList( XBF* pxbf );
BOOL IpListToKernelConfig( CIPMap* pIpMap );
BOOL KernelConfigToPerfmonCounters( XBF* pxbf );
BOOL PerfmonCountersToKernelConfig( CComputerPerfCounters* pPerfmonCounters );
extern "C" DWORD WINAPI PermonThread( LPVOID pV );
extern "C" DWORD WINAPI UserToKernelThread( LPVOID pV );
#endif
|