/*++

Copyright (c) 1995 Microsoft Corporation

Module Name:

    rpperf.idl

Abstract:
    interface between replication service on NT5 and performance monitor.

Author:

    Tatiana Shubin (Tatianas)  17-Feb-99

Revision History:
--*/

import "wtypes.idl";

[
uuid(ec02cae0-b9e0-11d2-be62-0020afeddf63),
version(1.0),
pointer_default(unique)
]
interface rpperf
{
	enum PerfCounter {
		eReplSent,
		eErrorReplSent,
		eHelloSent,
		eErrorHelloSent,
		eCreatedObj,
		eErrorCreated,
		eSetObj,
		eErrorSetObj,
		eDeletedObj,
		eErrorDeleted,
		eReplObj,	
		eWriteReq,	
		eNumPerfCounters
	};

	enum NT4MasterCounter {
		eLastSNOut,
		eLastSNIn,
		eSyncRequestSent,
		eRcvCreate,
		eRcvCreateError,
		eRcvSet,
		eRcvSetError,
		eRcvDelete,
		eRcvDeleteError,
		eRcvWriteReq,
		eNumNT4MasterCounter
	};

	const DWORD INSTANCE_NAME_LEN	= 64;
	const DWORD MAX_INSTANCE_NUM	= 20;

	typedef struct _NT4MasterObject {
						TCHAR pszMasterName[INSTANCE_NAME_LEN];
						DWORD dwNameLen;
						DWORD NT4MasterCounterArray[eNumNT4MasterCounter];
					}NT4MasterObject, * pNT4MasterObject;

	typedef struct _PerfDataObject {
							DWORD PerfCounterArray[eNumPerfCounters];
							DWORD dwMasterInstanceNum;
							NT4MasterObject NT4MasterArray[MAX_INSTANCE_NUM];
					}PerfDataObject,* pPerfDataObject;


/*===========================================================================================
    RPPERF functions
=============================================================================================*/

	void getCounterData(	[in] handle_t  hBind,
							[in, out] pPerfDataObject pData
							);
}
