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) 1994-1997 Microsoft Corporation
Module Name :
wamstats.hxx
Abstract: Declares a class consisting of statistics information. ( Multiple instances of the same object can be created for reuse)
Author:
Murali R. Krishnan ( MuraliK ) 04-Nov-1994
Project: Web Application Manager DLL
Revision History:
Murali R. Krishnan ( MuraliK ) 1-Apr-1997
--*/
# ifndef _WAMSTATS_HXX_
# define _WAMSTATS_HXX_
/************************************************************
* Include Headers ************************************************************/
# include "iperfctr.hxx" // standard macro defs for counters
# include "wam.h"
/************************************************************
* Type Definitions ************************************************************/
# define IPWAM_STATS_INCR( ctrName) \
void Incr ## ctrName(void) \ { \ IP_INCREMENT_COUNTER( m_WamStats.ctrName); \ }
# define IPWAM_STATS_DECR( ctrName) \
void Decr ## ctrName(void) \ { \ IP_DECREMENT_COUNTER( m_WamStats.ctrName); \ }
# define IPWAM_STATS_QUERY( ctrName) \
LONG Query ## ctrName(void) \ { \ return (IP_COUNTER_VALUE( m_WamStats.ctrName)); \ }
//
// A counter inside the statistics block should use the following three
// macros for defining "query", "incr" and "decr" methods inside
// the statistics object
//
# define IPWAM_STATS_COUNTER( ctrName) \
IPWAM_STATS_INCR( ctrName); \ IPWAM_STATS_DECR( ctrName); \ IPWAM_STATS_QUERY( ctrName); \
class WAM_STATISTICS {
private:
WAM_STATISTICS_0 m_WamStats;
// local lock to synchronize access among threads
// NYI: SPIN-COUNT
CRITICAL_SECTION m_csStatsLock;
public:
VOID LockStatistics( VOID) { EnterCriticalSection( &m_csStatsLock); }
VOID UnlockStatistics( VOID) { LeaveCriticalSection( &m_csStatsLock); } WAM_STATISTICS( VOID);
~WAM_STATISTICS( VOID) { DeleteCriticalSection( &m_csStatsLock); };
VOID ClearStatistics( VOID);
//
// copies statistics for RPC querying.
//
DWORD CopyToStatsBuffer( PWAM_STATISTICS_0 pStat0 );
// BGI Requests
void IncrWamRequests( void); IPWAM_STATS_INCR( CurrentWamRequests); IPWAM_STATS_QUERY( CurrentWamRequests); IPWAM_STATS_DECR( CurrentWamRequests);
IPWAM_STATS_COUNTER( TotalWamRequests);
}; // WAM_STATISTICS
typedef WAM_STATISTICS FAR * PWAM_STATISTICS;
/************************************************************
* Inline Methods ************************************************************/
inline void WAM_STATISTICS::IncrWamRequests(void) { # ifdef IP_ENABLE_COUNTERS
IncrTotalWamRequests(); IncrCurrentWamRequests();
if ( m_WamStats.CurrentWamRequests > m_WamStats.MaxWamRequests ) { LockStatistics();
if ( m_WamStats.CurrentWamRequests > m_WamStats.MaxWamRequests ) m_WamStats.MaxWamRequests = m_WamStats.CurrentWamRequests;
UnlockStatistics(); }
# endif // IP_ENABLE_COUNTERS
return; } // WAM_STATISTICS::IncrWamRequests()
# endif // _WAMSTATS_HXX_
/************************ End of File ***********************/
|