windows-nt/Source/XPSP1/NT/admin/netui/common/h/lmoreple.hxx
2020-09-26 16:20:57 +08:00

368 lines
8.5 KiB
C++

/**********************************************************************/
/** 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_