198 lines
8.7 KiB
C++
198 lines
8.7 KiB
C++
|
|
||
|
// Copyright (c) 1996-1999 Microsoft Corporation
|
||
|
|
||
|
//+============================================================================
|
||
|
//
|
||
|
// wksconfig.cxx
|
||
|
//
|
||
|
// This file implements the CTrkWksConfiguration class, which maintains
|
||
|
// run-time configuration parameters for the trkwks service.
|
||
|
//
|
||
|
//+============================================================================
|
||
|
|
||
|
#include "pch.cxx"
|
||
|
#include "trkwks.hxx"
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::_Parameters
|
||
|
//
|
||
|
// This array holds all the configurable parameters for the trkwks service.
|
||
|
// It holds the registry value name, the default value, etc. Static
|
||
|
// configuration values may only
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
STrkConfigRecord CTrkWksConfiguration::_Parameters[] =
|
||
|
{
|
||
|
TRKCONFIGRECORD( TEXT("Refresh"), ( 30 * TRKDAY ), 0, TRKCONFIG_STATIC, REFRESH_PERIOD_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("RefreshHesitation"), ( 6 * TRKHOUR ), 0, TRKCONFIG_STATIC, REFRESH_HESITATION_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("RefreshRetryMin"), ( 1 * TRKHOUR ), 0, TRKCONFIG_STATIC, REFRESH_RETRY_MIN_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("RefreshRetryMax"), ( 1 * TRKDAY ), 0, TRKCONFIG_STATIC, REFRESH_RETRY_MAX_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("PortThreadKeepAliveTime"), 30, 0, TRKCONFIG_STATIC, PORT_THREAD_KEEP_ALIVE_TIME_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxReferrals"), 100, 0, TRKCONFIG_STATIC, MAX_REFERRALS_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("PortNotifyError"), 0, 0, TRKCONFIG_STATIC, PORT_NOTIFY_ERROR_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("MinLogKB"), 20, 0, TRKCONFIG_STATIC, MIN_LOG_KB_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxLogKB"), 1000, 0, TRKCONFIG_STATIC, MAX_LOG_KB_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("LogDeltaKB"), 10, 0, TRKCONFIG_STATIC, LOG_DELTA_KB_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("LogOverwriteAge"), ( 30 * TRKDAY ), 0, TRKCONFIG_STATIC, LOG_OVERWRITE_AGE_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("LogFileOpenTime"), 10 /*seconds*/, 0, TRKCONFIG_STATIC, LOG_FILE_OPEN_TIME_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("VolFrequentTasksPeriod"), TRKDAY, 0, TRKCONFIG_STATIC, VOL_FREQUENT_TASKS_PERIOD_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolInfrequentTasksPeriod"), TRKWEEK, 0, TRKCONFIG_STATIC, VOL_INFREQUENT_TASKS_PERIOD_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("VolInitInitialDelay"), TRKMINUTE, 0, TRKCONFIG_STATIC, VOL_INIT_INITIAL_DELAY_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolInitRetryDelay1"), (30*TRKMINUTE), 0, TRKCONFIG_STATIC, VOL_INIT_RETRY_DELAY1_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolInitRetryDelay2"), (2*TRKHOUR), 0, TRKCONFIG_STATIC, VOL_INIT_RETRY_DELAY2_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolInitLifetime"), (6*TRKHOUR), 0, TRKCONFIG_STATIC, VOL_INIT_LIFETIME_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("VolNotOwnedExpireLimit"), TRKWEEK, 0, TRKCONFIG_STATIC, VOL_NOT_OWNED_EXPIRE_LIMIT_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolPeriodicTasksHesitation"), 2*TRKHOUR, 0, TRKCONFIG_STATIC, VOL_PERIODIC_TASKS_HESITATION_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("MoveNotifyTimeout"), 30, 0, TRKCONFIG_STATIC, MOVE_NOTIFY_TIMEOUT_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("MinMoveNotifyRetry"), 30, 0, TRKCONFIG_STATIC, MIN_MOVE_NOTIFY_RETRY_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxMoveNotifyRetry"), ( 4 * TRKHOUR ), 0, TRKCONFIG_STATIC, MAX_MOVE_NOTIFY_RETRY_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxMoveNotifyLifetime"), TRKDAY, 0, TRKCONFIG_STATIC, MAX_MOVE_NOTIFY_LIFETIME_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("ObjIdIndexReopen"), TRKMINUTE, 0, TRKCONFIG_STATIC, OBJID_INDEX_REOPEN_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("ObjIdIndexReopenRetryMax"), TRKMINUTE, 0, TRKCONFIG_STATIC, OBJID_INDEX_REOPEN_RETRY_MAX_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("ObjIdIndexReopenRetryMin"), TRKMINUTE, 0, TRKCONFIG_STATIC, OBJID_INDEX_REOPEN_RETRY_MIN_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("ObjIdIndexReopenLifetime"), ( 20 * TRKMINUTE ), 0, TRKCONFIG_STATIC, OBJID_INDEX_REOPEN_LIFETIME_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("IgnoreMovesAndDeletes"), 0, 0, TRKCONFIG_DYNAMIC,IGNORE_MOVES_AND_DELETES_CONFIG ),
|
||
|
|
||
|
TRKCONFIGRECORD( TEXT("BreakOnErrors"), 0, 0, TRKCONFIG_STATIC, BREAK_ON_ERRORS_CONFIG ), // Treated as a bool
|
||
|
TRKCONFIGRECORD( TEXT("DeleteNotifyTimeout"), ( 5 * TRKMINUTE ), 0, TRKCONFIG_STATIC, DELETE_NOTIFY_TIMEOUT_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxTunnelDelay"), 3, 0, TRKCONFIG_STATIC, MAX_TUNNEL_DELAY_CONFIG ), // Seconds
|
||
|
TRKCONFIGRECORD( TEXT("MaxSendsPerMoveNotify"), 26, 0, TRKCONFIG_STATIC, MAX_SENDS_PER_MOVE_NOTIFY_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("WksMaxRpcCalls"), 20, 0, TRKCONFIG_STATIC, WKS_MAX_RPC_CALLS_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("VolCacheTimeToLive"), ( 5 * TRKMINUTE ), 0, TRKCONFIG_DYNAMIC,VOLCACHE_TIME_TO_LIVE_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxDeleteNotifyQueue"), 5000, 0, TRKCONFIG_STATIC, MAX_DELETE_NOTIFY_QUEUE_CONFIG ),
|
||
|
TRKCONFIGRECORD( TEXT("MaxDeleteNotifyAttempts"), 100, 0, TRKCONFIG_STATIC, MAX_DELETE_NOTIFY_ATTEMPTS_CONFIG )
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::SetParameter
|
||
|
//
|
||
|
// Set a DWORD parameter in the _Parameters array, but don't update
|
||
|
// the registry value.
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL
|
||
|
CTrkWksConfiguration::SetParameter( DWORD dwParameter, DWORD dwValue )
|
||
|
{
|
||
|
if( dwParameter >= ELEMENTS( _Parameters ))
|
||
|
return( FALSE );
|
||
|
|
||
|
_Parameters[ dwParameter ].dwValue = dwValue;
|
||
|
return( TRUE );
|
||
|
}
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::PersistParameter
|
||
|
//
|
||
|
// Set a DWORD parameter value in the registry, but don't update it
|
||
|
// in the _Parameters array.
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL
|
||
|
CTrkWksConfiguration::PersistParameter( DWORD dwParameter, DWORD dwValue )
|
||
|
{
|
||
|
if( dwParameter >= _cParameters )
|
||
|
{
|
||
|
TrkLog(( TRKDBG_WARNING, TEXT("Attempt to set invalid parameter (%d/%d)"),
|
||
|
dwParameter, _cParameters ));
|
||
|
return( FALSE );
|
||
|
}
|
||
|
|
||
|
return( Write( _Parameters[dwParameter].ptszName, dwValue ));
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::ProcessInvalidParameter
|
||
|
//
|
||
|
// Common code for handling an attempt to set/get a parameter that does
|
||
|
// not exist.
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
void
|
||
|
CTrkWksConfiguration::ProcessInvalidParameter( DWORD dwParameter ) const
|
||
|
{
|
||
|
// This is a non-inline routine so that we can use TrkLog & TrkRaise
|
||
|
TrkLog(( TRKDBG_WARNING, TEXT("Invalid parameter request (%d)"), dwParameter ));
|
||
|
TrkRaiseException( E_FAIL );
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::Initialize
|
||
|
//
|
||
|
// Initialize this trkwks configuration class by initializing the base
|
||
|
// CTrkConfiguration class and reading in all the parameters. If
|
||
|
// fPersistable is set, we'll keep the registry key open so that
|
||
|
// we can later do writes.
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
void
|
||
|
CTrkWksConfiguration::Initialize( BOOL fPersistable )
|
||
|
{
|
||
|
ULONG cb;
|
||
|
|
||
|
_fInitialized = TRUE;
|
||
|
_cParameters = sizeof(_Parameters)/sizeof(_Parameters[0]);
|
||
|
|
||
|
CTrkConfiguration::Initialize( );
|
||
|
|
||
|
for( int i = 0; i <= MAX_TRKWKS_CONFIG; i++ )
|
||
|
{
|
||
|
Read( _Parameters[i].ptszName, &_Parameters[i].dwValue, _Parameters[i].dwDefault );
|
||
|
TrkAssert( _Parameters[i].Index == i );
|
||
|
}
|
||
|
TrkAssert( MAX_TRKWKS_CONFIG + 1 == ELEMENTS(_Parameters) );
|
||
|
|
||
|
if( !fPersistable )
|
||
|
// Allow the base class to close it's registry key.
|
||
|
CTrkWksConfiguration::UnInitialize();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// CTrkWksConfiguration::UnInitialize
|
||
|
//
|
||
|
// Uninit the base CTrkConfiguration class.
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
VOID
|
||
|
CTrkWksConfiguration::UnInitialize()
|
||
|
{
|
||
|
if( _fInitialized )
|
||
|
{
|
||
|
CTrkConfiguration::UnInitialize();
|
||
|
_fInitialized = FALSE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|