Leaked source code of windows server 2003
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) 2000, Microsoft Corporation
//
// File: DfsRootFolder.hxx
//
// Contents: the Root DFS Folder class
//
// Classes: DfsRootFolder
//
// History: Dec. 8 2000, Author: udayh
//
//-----------------------------------------------------------------------------
#ifndef __DFS_STATISTICS__
#define __DFS_STATISTICS__
#include "DfsGeneric.hxx"
#define VERY_LARGE_TIME_REFERRAL 40*1000
#define LARGE_TIME_REFERRAL 1000
#define SMALL_TIME_REFERRAL 50
class DfsStatistics: public DfsGeneric { private: LONG Hits; LONG Misses; LONG TotalReferrals; ULONG MinReferralTime; ULONG MaxReferralTime; LONG VeryLargeTimeReferrals; LONG LargeTimeReferrals; LONG SmallTimeReferrals; LONG NumberOfErrors; LONG DfsRequiredMemory; LONG DfsReferralCacheMemory; LONG ReferralsInMemory; LONG LinksAdded; LONG LinksDeleted; LONG LinksModified; LONG ForcedCacheFlush; LONG ReferralsFlushed; ULONG CacheFlushInterval; LONG ServerSiteCacheHits; LONG ServerSiteCacheMisses; SYSTEMTIME StartTime;
public: DfsStatistics() : DfsGeneric( DFS_OBJECT_TYPE_STATISTICS ) { Hits = 0; Misses = 0; TotalReferrals = 0; MinReferralTime = ~0; MaxReferralTime = 0; VeryLargeTimeReferrals = 0; LargeTimeReferrals = 0; SmallTimeReferrals = 0; NumberOfErrors = 0; DfsRequiredMemory = 0; DfsReferralCacheMemory = 0; ReferralsInMemory = 0; LinksAdded = 0; LinksDeleted = 0; LinksModified = 0; ForcedCacheFlush = 0; CacheFlushInterval = 0; ServerSiteCacheHits = 0; ServerSiteCacheMisses = 0; GetLocalTime( &StartTime ); }
~DfsStatistics() { NOTHING; }
VOID UpdateReferralStat ( BOOLEAN CacheHit, ULONG TimeConsumed, NTSTATUS ReferralStatus ) { InterlockedIncrement( &TotalReferrals ); if (ReferralStatus != STATUS_SUCCESS) { InterlockedIncrement( &NumberOfErrors); } else {
if (CacheHit == TRUE) { InterlockedIncrement( &Hits ); } else { InterlockedIncrement( &Misses ); }
if (TimeConsumed < MinReferralTime) { MinReferralTime = TimeConsumed; } else if (TimeConsumed > MaxReferralTime) { MaxReferralTime = TimeConsumed; } if (TimeConsumed > LARGE_TIME_REFERRAL) { InterlockedIncrement( &LargeTimeReferrals ); if (TimeConsumed > VERY_LARGE_TIME_REFERRAL) { InterlockedIncrement( &VeryLargeTimeReferrals ); } } else if (TimeConsumed < SMALL_TIME_REFERRAL) { InterlockedIncrement( &SmallTimeReferrals ); }
} return NOTHING; }
VOID AddCacheMemoryStat ( LONG Size ) { InterlockedExchangeAdd( &DfsReferralCacheMemory, Size ); }
VOID SubCacheMemoryStat ( LONG Size ) { InterlockedExchangeAdd( &DfsReferralCacheMemory, (-Size) ); } VOID AddRequiredMemoryStat ( LONG Size ) { InterlockedExchangeAdd( &DfsRequiredMemory, Size ); } VOID SubRequiredMemoryStat ( LONG Size ) { InterlockedExchangeAdd( &DfsRequiredMemory, (-Size) ); }
VOID UpdateLinkAdded() { InterlockedIncrement( &LinksAdded ); }
VOID UpdateLinkDeleted() { InterlockedIncrement( &LinksDeleted ); }
VOID UpdateLinkModified() { InterlockedIncrement( &LinksModified ); }
VOID UpdateForcedCacheFlush() { InterlockedIncrement( &ForcedCacheFlush ); }
VOID DumpStatistics( PUNICODE_STRING pLogicalShare );
VOID UpdateServerSiteStat( BOOLEAN CacheHit) {
if (CacheHit == TRUE) { InterlockedIncrement( &ServerSiteCacheHits ); } else { InterlockedIncrement( &ServerSiteCacheMisses ); } }
};
#endif // __DFS_STATISTICS__
|