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.
|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
lmoreple.hxx Class declarations for the REPL_EDIR_BASE and REPL_EDIR_x classes.
REPL_EDIR_BASE is an abstract superclass that contains common methods and data members shared between the REPL_EDIR_x classes.
The REPL_EDIR_x classes each represent a different info-level "view" of an exported directory in the Replicator's export path.
The classes are structured as follows:
LOC_LM_OBJ | \---REPL_DIR_BASE | +---REPL_EDIR_BASE | \---REPL_EDIR_0 | \---REPL_EDIR_1 | \---REPL_EDIR_2
FILE HISTORY: KeithMo 20-Feb-1992 Created for the Server Manager.
*/
#ifndef _LMOREPLE_HXX_
#define _LMOREPLE_HXX_
#include "lmorepld.hxx"
/*************************************************************************
NAME: REPL_EDIR_BASE
SYNOPSIS: Abstract superclass for the Replicator Export Directory classes.
INTERFACE: REPL_EDIR_BASE - Class constructor.
~REPL_EDIR_BASE - Class destructor.
PARENT: REPL_DIR_BASE
HISTORY: KeithMo 20-Feb-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS REPL_EDIR_BASE : public REPL_DIR_BASE { protected: //
// These virtual callbacks are called by NEW_LM_OBJ to
// invoke any necessary NetReplExportDir{Get,Set}Info API.
//
virtual APIERR I_GetInfo( VOID ); virtual APIERR I_WriteInfo( VOID );
//
// This virtual callback is invoked by NEW_LM_OBJ to
// delete an existing object. This method will invoke
// the NetReplExportDirDel API.
//
virtual APIERR I_Delete( UINT nForce );
//
// This virtual callback is invoked by NEW_LM_OBJ to
// create a new object. This method will invoke the
// NetReplExportDirAdd API.
//
virtual APIERR I_WriteNew( VOID );
//
// This virtual helper is called by I_WriteInfo and
// I_WriteNew to setup the necessary data structures
// before the network API is invoked.
//
virtual APIERR W_Write( VOID ) = 0;
//
// This private virtual callback extracts & caches any
// data from an API buffer which must be "persistant".
//
virtual APIERR W_CacheApiData( const BYTE * pbBuffer ) = 0;
//
// This method will invoke the appropriate number of
// NetReplExportDirLock() & NetReplExportDirUnlock() API
// as required by the current lock bias (as stored in
// REPL_DIR_BASE).
//
APIERR W_AdjustLocks( VOID );
//
// Since this is an abstract superclass, its constructor
// is protected.
//
REPL_EDIR_BASE( const TCHAR * pszServerName, const TCHAR * pszDirName );
public: ~REPL_EDIR_BASE( VOID );
}; // class REPL_EDIR_BASE
/*************************************************************************
NAME: REPL_EDIR_0
SYNOPSIS: Info-level 0 Replicator Export Directory class.
INTERFACE: REPL_EDIR_0 - Class constructor.
~REPL_EDIR_0 - Class destructor.
PARENT: REPL_EDIR_BASE
HISTORY: KeithMo 20-Feb-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS REPL_EDIR_0 : public REPL_EDIR_BASE { private: //
// This helper function is called by I_WriteInfo and
// I_WriteNew to setup the REPL_EDIR_INFO_0 structure.
//
virtual APIERR W_Write( VOID );
protected: //
// This virtual callback is called by I_CreateNew to
// initialize the data members for a new object. This
// method must always invoke its parent method before
// anything else. This method does not invoke any
// network API.
//
virtual APIERR W_CreateNew( VOID );
//
// This private virtual callback extracts & caches any
// data from an API buffer which must be "persistant".
//
virtual APIERR W_CacheApiData( const BYTE * pbBuffer );
public: //
// Usual constructor/destructor goodies.
//
REPL_EDIR_0( const TCHAR * pszServerName, const TCHAR * pszDirName );
~REPL_EDIR_0( VOID );
}; // class REPL_EDIR_0
/*************************************************************************
NAME: REPL_EDIR_1
SYNOPSIS: Info-level 1 Replicator Export Directory class.
INTERFACE: REPL_EDIR_1 - Class constructor.
~REPL_EDIR_1 - Class destructor.
QueryIntegrity - Returns the directory integrity.
SetIntegrity - Sets the directory integrity.
QueryExtent - Returns the directory extent.
SetExtent - Sets the directory extent.
PARENT: REPL_EDIR_0
HISTORY: KeithMo 20-Feb-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS REPL_EDIR_1 : public REPL_EDIR_0 { private: //
// These data members cache the values retrieved
// from the REPL_EDIR_INFO_1 structure.
//
ULONG _lIntegrity; ULONG _lExtent;
//
// This helper function is called by I_WriteInfo and
// I_WriteNew to setup the REPL_EDIR_INFO_1 structure.
//
virtual APIERR W_Write( VOID );
protected: //
// This virtual callback is called by I_CreateNew to
// initialize the data members for a new object. This
// method must always invoke its parent method before
// anything else. This method does not invoke any
// network API.
//
virtual APIERR W_CreateNew( VOID );
//
// This private virtual callback extracts & caches any
// data from an API buffer which must be "persistant".
//
virtual APIERR W_CacheApiData( const BYTE * pbBuffer );
public: //
// Usual constructor/destructor goodies.
//
REPL_EDIR_1( const TCHAR * pszServerName, const TCHAR * pszDirName );
~REPL_EDIR_1( VOID );
//
// Accessor methods.
//
ULONG QueryIntegrity( VOID ) const { return _lIntegrity; }
VOID SetIntegrity( ULONG lIntegrity ) { _lIntegrity = lIntegrity; }
ULONG QueryExtent( VOID ) const { return _lExtent; }
VOID SetExtent( ULONG lExtent ) { _lExtent = lExtent; }
}; // class REPL_EDIR_1
/*************************************************************************
NAME: REPL_EDIR_2
SYNOPSIS: Info-level 2 Replicator Export Directory class.
INTERFACE: REPL_EDIR_2 - Class constructor.
~REPL_EDIR_2 - Class destructor.
QueryLockCount - Returns the directory lock count.
SetLockCount - Sets the directory lock count.
QueryLockTime - Returns the number of seconds since the directory was last locked.
SetLockTime - Sets the lock time.
PARENT: REPL_EDIR_1
HISTORY: KeithMo 20-Feb-1992 Created for the Server Manager.
**************************************************************************/ DLL_CLASS REPL_EDIR_2 : public REPL_EDIR_1 { private: //
// These data members cache the values retrieved
// from the REPL_EDIR_INFO_2 structure.
//
ULONG _lLockCount; ULONG _lLockTime;
//
// This helper function is called by I_WriteInfo and
// I_WriteNew to setup the REPL_EDIR_INFO_2 structure.
//
virtual APIERR W_Write( VOID );
protected: //
// This virtual callback is called by I_CreateNew to
// initialize the data members for a new object. This
// method must always invoke its parent method before
// anything else. This method does not invoke any
// network API.
//
virtual APIERR W_CreateNew( VOID );
//
// This private virtual callback extracts & caches any
// data from an API buffer which must be "persistant".
//
virtual APIERR W_CacheApiData( const BYTE * pbBuffer );
//
// Since the lock count & lock time are not dynamically
// settable, their set methods are protected.
//
VOID SetLockCount( ULONG lLockCount ) { _lLockCount = lLockCount; }
VOID SetLockTime( ULONG lLockTime ) { _lLockTime = lLockTime; }
public: //
// Usual constructor/destructor goodies.
//
REPL_EDIR_2( const TCHAR * pszServerName, const TCHAR * pszDirName );
~REPL_EDIR_2( VOID );
//
// Accessor methods.
//
ULONG QueryLockCount( VOID ) const { return _lLockCount; }
ULONG QueryLockTime( VOID ) const { return _lLockTime; }
}; // class REPL_EDIR_2
#endif // _LMOREPLE_HXX_
|