/*++
*******************************************************************************
* Copyright (c) 1990-98 Digi International Inc., All Rights Reserved				*
* 																										*
* This software contains proprietary and confidential information of Digi		*
* International Inc.  By accepting transfer of this copy, Recipient agrees		*
* to retain this software in confidence, to prevent disclosure to others,		*
* and to make no use of this software other than that for which it was			*
* delivered.  This is an unpublished copyrighted work of Digi International	*
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly	*
* prohibited.																						*
* 																										*
* Restricted Rights Legend																		*
*																										*
* Use, duplication, or disclosure by the Government is subject to					*
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in			*
* Technical Data and Computer Software clause at DFARS 252.227-7031 or			*
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -				*
* Restricted Rights at 48 CFR 52.227-19, as applicable.								*
*																										*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343				*
*																										*
*******************************************************************************

Module Name:

   sohdata.h

Abstract:

   Data definitions

Author:

   Jeff Romatoski

--*/

#ifndef SOHDATA_H
#define SOHDATA_H

#include "sohapi.h"

//  Perfmon assume that all fields are packed and aligned on DWORD 
//  boundaries. Alpha support may change this assumption so the pack 
//  pragma is used here to insure the DWORD packing assumption remains valid.
#pragma pack (4)


//
//  Extensible Object definitions
//

//  Update the following define when adding an object type.
#define SOH_NUM_PERF_OBJECT_TYPES 2

//----------------------------------------------------------------------------
//
// Each DEFINITION struct defines an object type for perfmon.  The associated 
// DATA struct defines the data associated with that object type.  The fields in
// the DATA struct *must* correlate with the fields in the DEFINITION struct.
//

//
// Streams defines the streams object resources (Qpairs, Streams, BufCall, etc..).  
//

typedef struct SOH_STREAMS_DEFINITION
{
    PERF_OBJECT_TYPE        Type;
    PERF_COUNTER_DEFINITION Min;
    PERF_COUNTER_DEFINITION Max;
    PERF_COUNTER_DEFINITION Used;
    PERF_COUNTER_DEFINITION Hwm;
    PERF_COUNTER_DEFINITION Free;
    PERF_COUNTER_DEFINITION Fail;
    PERF_COUNTER_DEFINITION Size;
    PERF_COUNTER_DEFINITION Total;
} SOH_STREAMS_DEFINITION, *PSOH_STREAMS_DEFINITION;


//
// Msg Blocks defines the msg blocks size pools (16, 32, 64, etc..).  
//

typedef struct SOH_DATABLOCKS_DEFINITION
{
    PERF_OBJECT_TYPE        Type;
    PERF_COUNTER_DEFINITION Min;
    PERF_COUNTER_DEFINITION Max;
    PERF_COUNTER_DEFINITION Used;
    PERF_COUNTER_DEFINITION Hwm;
    PERF_COUNTER_DEFINITION Free;
    PERF_COUNTER_DEFINITION Fail;
    PERF_COUNTER_DEFINITION Size;
    PERF_COUNTER_DEFINITION Total;
} SOH_DATABLOCKS_DEFINITION, *PSOH_DATABLOCKS_DEFINITION;


typedef struct _QUEUE_COUNTER {
    PERF_COUNTER_BLOCK      CounterBlock;
	SOH_QUEUE_STATS			QueueStats;
} QUEUE_COUNTER, *PQUEUE_COUNTER;

extern SOH_STREAMS_DEFINITION		gStreamsDefinition;
extern SOH_DATABLOCKS_DEFINITION	gDataBlocksDefinition;

#pragma pack ()
#endif
