mirror of https://github.com/tongzx/nt5src
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.
312 lines
7.4 KiB
312 lines
7.4 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
lmorepli.hxx
|
|
Class declarations for the REPL_IDIR_BASE and REPL_IDIR_x classes.
|
|
|
|
REPL_IDIR_BASE is an abstract superclass that contains common methods
|
|
and data members shared between the REPL_IDIR_x classes.
|
|
|
|
The REPL_IDIR_x classes each represent a different info-level "view"
|
|
of an imported directory in the Replicator's import path.
|
|
|
|
The classes are structured as follows:
|
|
|
|
LOC_LM_OBJ
|
|
|
|
|
\---REPL_DIR_BASE
|
|
|
|
|
\---REPL_IDIR_BASE
|
|
|
|
|
\---REPL_IDIR_0
|
|
|
|
|
\---REPL_IDIR_1
|
|
|
|
FILE HISTORY:
|
|
KeithMo 20-Feb-1992 Created for the Server Manager.
|
|
|
|
*/
|
|
|
|
|
|
#ifndef _LMOREPLI_HXX_
|
|
#define _LMOREPLI_HXX_
|
|
|
|
|
|
#include "lmorepld.hxx"
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: REPL_IDIR_BASE
|
|
|
|
SYNOPSIS: Abstract superclass for the Replicator Import Directory
|
|
classes.
|
|
|
|
INTERFACE: REPL_IDIR_BASE - Class constructor.
|
|
|
|
~REPL_IDIR_BASE - Class destructor.
|
|
|
|
PARENT: REPL_DIR_BASE
|
|
|
|
HISTORY:
|
|
KeithMo 20-Feb-1992 Created for the Server Manager.
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS REPL_IDIR_BASE : public REPL_DIR_BASE
|
|
{
|
|
protected:
|
|
//
|
|
// These virtual callbacks are called by NEW_LM_OBJ to
|
|
// invoke any necessary NetReplImportDir{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 NetReplImportDirDel 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
|
|
// NetReplImportDirAdd 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
|
|
// NetReplImportDirLock() & NetReplImportDirUnlock() 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_IDIR_BASE( const TCHAR * pszServerName,
|
|
const TCHAR * pszDirName );
|
|
|
|
public:
|
|
~REPL_IDIR_BASE( VOID );
|
|
|
|
}; // class REPL_IDIR_BASE
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: REPL_IDIR_0
|
|
|
|
SYNOPSIS: Info-level 0 Replicator Import Directory class.
|
|
|
|
INTERFACE: REPL_IDIR_0 - Class constructor.
|
|
|
|
~REPL_IDIR_0 - Class destructor.
|
|
|
|
PARENT: REPL_IDIR_BASE
|
|
|
|
HISTORY:
|
|
KeithMo 20-Feb-1992 Created for the Server Manager.
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS REPL_IDIR_0 : public REPL_IDIR_BASE
|
|
{
|
|
private:
|
|
//
|
|
// This helper function is called by I_WriteInfo and
|
|
// I_WriteNew to setup the REPL_IDIR_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_IDIR_0( const TCHAR * pszServerName,
|
|
const TCHAR * pszDirName );
|
|
|
|
~REPL_IDIR_0( VOID );
|
|
|
|
}; // class REPL_IDIR_0
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: REPL_IDIR_1
|
|
|
|
SYNOPSIS: Info-level 1 Replicator Import Directory class.
|
|
|
|
INTERFACE: REPL_IDIR_1 - Class constructor.
|
|
|
|
~REPL_IDIR_1 - Class destructor.
|
|
|
|
QueryState - Returns the directory state.
|
|
|
|
SetState - Sets the directory state.
|
|
|
|
QueryMasterName - Returns the name of the master
|
|
(exporter) which most recently
|
|
exported to this directory.
|
|
|
|
SetMasterName - Sets the master name.
|
|
|
|
QueryLastUpdateTime - Returns the number of seconds
|
|
since the directory was last
|
|
updated.
|
|
|
|
SetLastUpdateTime - Sets the last update time.
|
|
|
|
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_IDIR_0
|
|
|
|
HISTORY:
|
|
KeithMo 20-Feb-1992 Created for the Server Manager.
|
|
|
|
**************************************************************************/
|
|
DLL_CLASS REPL_IDIR_1 : public REPL_IDIR_0
|
|
{
|
|
private:
|
|
//
|
|
// These data members cache the values retrieved
|
|
// from the REPL_IDIR_INFO_1 structure.
|
|
//
|
|
|
|
ULONG _lState;
|
|
NLS_STR _nlsMasterName;
|
|
ULONG _lLastUpdateTime;
|
|
ULONG _lLockCount;
|
|
ULONG _lLockTime;
|
|
|
|
//
|
|
// This helper function is called by I_WriteInfo and
|
|
// I_WriteNew to setup the REPL_IDIR_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 );
|
|
|
|
//
|
|
// Since these fields are not dynamically settable,
|
|
// their set methods are protected.
|
|
//
|
|
|
|
VOID SetState( ULONG lState )
|
|
{ _lState = lState; }
|
|
|
|
APIERR SetMasterName( const TCHAR * pszMasterName );
|
|
|
|
VOID SetLastUpdateTime( ULONG lLastUpdateTime )
|
|
{ _lLastUpdateTime = lLastUpdateTime; }
|
|
|
|
VOID SetLockCount( ULONG lLockCount )
|
|
{ _lLockCount = lLockCount; }
|
|
|
|
VOID SetLockTime( ULONG lLockTime )
|
|
{ _lLockTime = lLockTime; }
|
|
|
|
public:
|
|
//
|
|
// Usual constructor/destructor goodies.
|
|
//
|
|
|
|
REPL_IDIR_1( const TCHAR * pszServerName,
|
|
const TCHAR * pszDirName );
|
|
|
|
~REPL_IDIR_1( VOID );
|
|
|
|
//
|
|
// Accessor methods.
|
|
//
|
|
|
|
ULONG QueryState( VOID ) const
|
|
{ return _lState; }
|
|
|
|
const TCHAR * QueryMasterName( VOID ) const
|
|
{ return _nlsMasterName.QueryPch(); }
|
|
|
|
ULONG QueryLastUpdateTime( VOID ) const
|
|
{ return _lLastUpdateTime; }
|
|
|
|
ULONG QueryLockCount( VOID ) const
|
|
{ return _lLockCount; }
|
|
|
|
ULONG QueryLockTime( VOID ) const
|
|
{ return _lLockTime; }
|
|
|
|
}; // class REPL_IDIR_1
|
|
|
|
|
|
#endif // _LMOREPLI_HXX_
|