/**********************************************************************/
/**			  Microsoft LAN Manager 		     **/
/**		Copyright(c) Microsoft Corp., 1990, 1991	     **/
/**********************************************************************/

/*
    lmoerepl.hxx
    This file contains the class declarations for the REPL_EDIR0_ENUM,
    REPL_EDIR1_ENUM, REPL_EDIR2_ENUM, REPL_IDIR0_ENUM, and
    REPL_IDIR1_ENUM classes and their associated iterators.
    and FILE3_ENUM_ITER classes.

    FILE HISTORY:
	KeithMo	    26-Feb-1992	    Created for the Server Manager.

*/

#ifndef _LMOEREPL_HXX_
#define _LMOEREPL_HXX_


#include "lmoenum.hxx"
#include "string.hxx"


//
//  Export directory enumerators.
//

/*************************************************************************

    NAME:	REPL_EDIR_ENUM

    SYNOPSIS:	Base class for replicator export directory enumerations.

    INTERFACE:	REPL_EDIR_ENUM		- Class constructor.

    		~REPL_EDIR__ENUM	- Class destructor.

		CallAPI			- Invoke the enumeration API.

    PARENT:	LOC_LM_ENUM

    USES:	NLS_STR

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR_ENUM : public LOC_LM_ENUM
{
private:
    virtual APIERR CallAPI( BYTE ** ppbBuffer,
			    UINT  * pcEntriesRead );

protected:
    REPL_EDIR_ENUM( const TCHAR * pszServer,
		    UINT	  Level );

};  // class REPL_EDIR_ENUM


/*************************************************************************

    NAME:	REPL_EDIR0_ENUM

    SYNOPSIS:	Info level 0 replicator export directory enumerator.

    INTERFACE:	REPL_EDIR0_ENUM		- Class constructor.

    		~REPL_EDIR0_ENUM	- Class destructor.


    PARENT:	REPL_EDIR_ENUM

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR0_ENUM : public REPL_EDIR_ENUM
{
public:
    REPL_EDIR0_ENUM( const TCHAR * pszServer );

};  // class REPL_EDIR0_ENUM


/*************************************************************************

    NAME:	REPL_EDIR0_ENUM_OBJ

    SYNOPSIS:	This is basically the return type from the
		REPL_EDIR0_ENUM_ITER iterator.

    INTERFACE:	REPL_EDIR0_ENUM_OBJ	- Class constructor.

    		~REPL_EDIR0_ENUM_OBJ	- Class destructor.

		QueryBufferPtr		- Replaces ENUM_OBJ_BASE method.

		QueryDirName		- Returns the directory name.

    PARENT:	ENUM_OBJ_BASE

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR0_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:

    //
    //	Provide properly-casted buffer Query/Set methods.
    //

    const REPL_EDIR_INFO_0 * QueryBufferPtr( VOID ) const
	{ return (const REPL_EDIR_INFO_0 *)ENUM_OBJ_BASE::QueryBufferPtr(); }

    VOID SetBufferPtr( const REPL_EDIR_INFO_0 * pBuffer )
	{ ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }

    //
    //	Accessors.
    //

    DECLARE_ENUM_ACCESSOR( QueryDirName, const TCHAR *, rped0_dirname );

};  // class REPL_EDIR0_ENUM_OBJ

DECLARE_LM_ENUM_ITER_OF( REPL_EDIR0, REPL_EDIR_INFO_0 );


/*************************************************************************

    NAME:	REPL_EDIR1_ENUM

    SYNOPSIS:	Info level 1 replicator export directory enumerator.

    INTERFACE:	REPL_EDIR1_ENUM		- Class constructor.

    		~REPL_EDIR1_ENUM	- Class destructor.

    PARENT:	REPL_EDIR_ENUM

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR1_ENUM : public REPL_EDIR_ENUM
{
public:
    REPL_EDIR1_ENUM( const TCHAR * pszServer );

};  // class REPL_EDIR1_ENUM


/*************************************************************************

    NAME:	REPL_EDIR1_ENUM_OBJ

    SYNOPSIS:	This is basically the return type from the
		REPL_EDIR1_ENUM_ITER iterator.

    INTERFACE:	REPL_EDIR1_ENUM_OBJ	- Class constructor.

    		~REPL_EDIR1_ENUM_OBJ	- Class destructor.

		QueryBufferPtr		- Replaces ENUM_OBJ_BASE method.

		QueryDirName		- Returns the directory name.

		QueryIntegrity		- Returns the directory integrity.

		QueryExtent		- Returns the directory extent.

    PARENT:	ENUM_OBJ_BASE

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR1_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:

    //
    //	Provide properly-casted buffer Query/Set methods.
    //

    const REPL_EDIR_INFO_1 * QueryBufferPtr( VOID ) const
	{ return (const REPL_EDIR_INFO_1 *)ENUM_OBJ_BASE::QueryBufferPtr(); }

    VOID SetBufferPtr( const REPL_EDIR_INFO_1 * pBuffer )
	{ ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }

    //
    //	Accessors.
    //

    DECLARE_ENUM_ACCESSOR( QueryDirName,   const TCHAR *, rped1_dirname   );
    DECLARE_ENUM_ACCESSOR( QueryIntegrity, ULONG,         rped1_integrity );
    DECLARE_ENUM_ACCESSOR( QueryExtent,    ULONG,         rped1_extent    );

};  // class REPL_EDIR1_ENUM_OBJ

DECLARE_LM_ENUM_ITER_OF( REPL_EDIR1, REPL_EDIR_INFO_1 );


/*************************************************************************

    NAME:	REPL_EDIR2_ENUM

    SYNOPSIS:	Info level 2 replicator export directory enumerator.

    INTERFACE:	REPL_EDIR2_ENUM		- Class constructor.

    		~REPL_EDIR2_ENUM	- Class destructor.

    PARENT:	REPL_EDIR_ENUM

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR2_ENUM : public REPL_EDIR_ENUM
{
public:
    REPL_EDIR2_ENUM( const TCHAR * pszServer );

};  // class REPL_EDIR2_ENUM


/*************************************************************************

    NAME:	REPL_EDIR2_ENUM_OBJ

    SYNOPSIS:	This is basically the return type from the
		REPL_EDIR2_ENUM_ITER iterator.

    INTERFACE:	REPL_EDIR2_ENUM_OBJ	- Class constructor.

    		~REPL_EDIR2_ENUM_OBJ	- Class destructor.

		QueryBufferPtr		- Replaces ENUM_OBJ_BASE method.

		QueryDirName		- Returns the directory name.

		QueryIntegrity		- Returns the directory integrity.

		QueryExtent		- Returns the directory extent.

		QueryLockCount		- Returns the directory lock count.

		QueryLockTime		- Returns the directory lock time.

    PARENT:	ENUM_OBJ_BASE

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_EDIR2_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:

    //
    //	Provide properly-casted buffer Query/Set methods.
    //

    const REPL_EDIR_INFO_2 * QueryBufferPtr( VOID ) const
	{ return (const REPL_EDIR_INFO_2 *)ENUM_OBJ_BASE::QueryBufferPtr(); }

    VOID SetBufferPtr( const REPL_EDIR_INFO_2 * pBuffer )
	{ ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }

    //
    //	Accessors.
    //

    DECLARE_ENUM_ACCESSOR( QueryDirName,   const TCHAR *, rped2_dirname   );
    DECLARE_ENUM_ACCESSOR( QueryIntegrity, ULONG,         rped2_integrity );
    DECLARE_ENUM_ACCESSOR( QueryExtent,    ULONG,         rped2_extent    );
    DECLARE_ENUM_ACCESSOR( QueryLockCount, ULONG,         rped2_lockcount );
    DECLARE_ENUM_ACCESSOR( QueryLockTime,  ULONG,         rped2_locktime  );

};  // class REPL_EDIR2_ENUM_OBJ

DECLARE_LM_ENUM_ITER_OF( REPL_EDIR2, REPL_EDIR_INFO_2 );


//
//  Import directory enumerators.
//

/*************************************************************************

    NAME:	REPL_IDIR_ENUM

    SYNOPSIS:	Base class for replicator export directory enumerations.

    INTERFACE:	REPL_IDIR_ENUM		- Class constructor.

    		~REPL_IDIR__ENUM	- Class destructor.

		CallAPI			- Invoke the enumeration API.

    PARENT:	LOC_LM_ENUM

    USES:	NLS_STR

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_IDIR_ENUM : public LOC_LM_ENUM
{
private:
    virtual APIERR CallAPI( BYTE ** ppbBuffer,
			    UINT  * pcEntriesRead );

protected:
    REPL_IDIR_ENUM( const TCHAR * pszServer,
		    UINT	  Level );

};  // class REPL_IDIR_ENUM


/*************************************************************************

    NAME:	REPL_IDIR0_ENUM

    SYNOPSIS:	Info level 0 replicator export directory enumerator.

    INTERFACE:	REPL_IDIR0_ENUM		- Class constructor.

    		~REPL_IDIR0_ENUM	- Class destructor.

    PARENT:	REPL_IDIR_ENUM

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_IDIR0_ENUM : public REPL_IDIR_ENUM
{
public:
    REPL_IDIR0_ENUM( const TCHAR * pszServer );

};  // class REPL_IDIR0_ENUM


/*************************************************************************

    NAME:	REPL_IDIR0_ENUM_OBJ

    SYNOPSIS:	This is basically the return type from the
		REPL_IDIR0_ENUM_ITER iterator.

    INTERFACE:	REPL_IDIR0_ENUM_OBJ	- Class constructor.

    		~REPL_IDIR0_ENUM_OBJ	- Class destructor.

		QueryBufferPtr		- Replaces ENUM_OBJ_BASE method.

		QueryDirName		- Returns the directory name.

    PARENT:	ENUM_OBJ_BASE

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_IDIR0_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:

    //
    //	Provide properly-casted buffer Query/Set methods.
    //

    const REPL_IDIR_INFO_0 * QueryBufferPtr( VOID ) const
	{ return (const REPL_IDIR_INFO_0 *)ENUM_OBJ_BASE::QueryBufferPtr(); }

    VOID SetBufferPtr( const REPL_IDIR_INFO_0 * pBuffer )
	{ ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }

    //
    //	Accessors.
    //

    DECLARE_ENUM_ACCESSOR( QueryDirName, const TCHAR *, rpid0_dirname );

};  // class REPL_IDIR0_ENUM_OBJ

DECLARE_LM_ENUM_ITER_OF( REPL_IDIR0, REPL_IDIR_INFO_0 );


/*************************************************************************

    NAME:	REPL_IDIR1_ENUM

    SYNOPSIS:	Info level 1 replicator export directory enumerator.

    INTERFACE:	REPL_IDIR1_ENUM		- Class constructor.

    		~REPL_IDIR1_ENUM	- Class destructor.

    PARENT:	REPL_IDIR_ENUM

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_IDIR1_ENUM : public REPL_IDIR_ENUM
{
public:
    REPL_IDIR1_ENUM( const TCHAR * pszServer );

};  // class REPL_IDIR1_ENUM


/*************************************************************************

    NAME:	REPL_IDIR1_ENUM_OBJ

    SYNOPSIS:	This is basically the return type from the
		REPL_IDIR1_ENUM_ITER iterator.

    INTERFACE:	REPL_IDIR1_ENUM_OBJ	- Class constructor.

    		~REPL_IDIR1_ENUM_OBJ	- Class destructor.

		QueryBufferPtr		- Replaces ENUM_OBJ_BASE method.

		QueryDirName		- Returns the directory name.

		QueryState		- Returns the directory state.

		QueryMasterName		- Returns the directory master name.

		QueryLastUpdateTime	- Returns the time of the last update.

		QueryLockCount		- Returns the lock count.

		QueryLockTime		- Returns the lock time.

    PARENT:	ENUM_OBJ_BASE

    HISTORY:
	KeithMo	    26-Feb-1992	    Created

**************************************************************************/
DLL_CLASS REPL_IDIR1_ENUM_OBJ : public ENUM_OBJ_BASE
{
public:

    //
    //	Provide properly-casted buffer Query/Set methods.
    //

    const REPL_IDIR_INFO_1 * QueryBufferPtr( VOID ) const
	{ return (const REPL_IDIR_INFO_1 *)ENUM_OBJ_BASE::QueryBufferPtr(); }

    VOID SetBufferPtr( const REPL_IDIR_INFO_1 * pBuffer )
	{ ENUM_OBJ_BASE::SetBufferPtr( (const BYTE *)pBuffer ); }

    //
    //	Accessors.
    //

    DECLARE_ENUM_ACCESSOR( QueryDirName,        const TCHAR *, rpid1_dirname          );
    DECLARE_ENUM_ACCESSOR( QueryState,          ULONG,         rpid1_state            );
    DECLARE_ENUM_ACCESSOR( QueryMasterName,     const TCHAR *, rpid1_mastername       );
    DECLARE_ENUM_ACCESSOR( QueryLastUpdateTime, ULONG,         rpid1_last_update_time );
    DECLARE_ENUM_ACCESSOR( QueryLockCount,      ULONG,         rpid1_lockcount        );
    DECLARE_ENUM_ACCESSOR( QueryLockTime,       ULONG,         rpid1_locktime         );

};  // class REPL_IDIR1_ENUM_OBJ

DECLARE_LM_ENUM_ITER_OF( REPL_IDIR1, REPL_IDIR_INFO_1 );


#endif	// _LMOEREPL_HXX_