//*********************************************************************
//*
//* perfdata.cpp
//*
//*********************************************************************


#include "stdh.h"
#include "perfdata.h"
#include "qmperf.h"

//
// QM General Counters
//
PerfCounterDef QMCountersArray[] =
{
    {NUMSESSIONS,				NUMSESSIONS,				0, PERF_COUNTER_RAWCOUNT},
    {NUMIPSESSIONS,				NUMIPSESSIONS,				0, PERF_COUNTER_RAWCOUNT},
	{NUM_OUTGOING_HTTP_SESSIONS,NUM_OUTGOING_HTTP_SESSIONS, 0, PERF_COUNTER_RAWCOUNT},
	{NUM_INCOMING_PGM_SESSIONS, NUM_INCOMING_PGM_SESSIONS,	0, PERF_COUNTER_RAWCOUNT},
	{NUM_OUTGOING_PGM_SESSIONS, NUM_OUTGOING_PGM_SESSIONS,	0, PERF_COUNTER_RAWCOUNT},

    {NUMINQMPACKETS,       NUMINQMPACKETS      ,0,PERF_COUNTER_COUNTER},
    {TOTALINQMPACKETS,     TOTALINQMPACKETS    ,0,PERF_COUNTER_RAWCOUNT},
    {NUMOUTQMPACKETS,      NUMOUTQMPACKETS     ,0,PERF_COUNTER_COUNTER},
    {TOTALOUTQMPACKETS,    TOTALOUTQMPACKETS   ,0,PERF_COUNTER_RAWCOUNT},

    {TOTALPACKETSINQUEUES, TOTALPACKETSINQUEUES, (DWORD)-2, PERF_COUNTER_RAWCOUNT},
    {TOTALBYTESINQUEUES,   TOTALBYTESINQUEUES  , (DWORD)-4, PERF_COUNTER_RAWCOUNT}
};


//
// Counters per active sessions
//
PerfCounterDef  SessionCountersArray[] =
{
    {NUMSESSINPACKETS,      NUMSESSINPACKETS,   0,  PERF_COUNTER_COUNTER},
    {NUMSESSOUTPACKETS,     NUMSESSOUTPACKETS,  0,  PERF_COUNTER_COUNTER},
    {NUMSESSINBYTES,        NUMSESSINBYTES,     0,  PERF_COUNTER_COUNTER},
    {NUMSESSOUTBYTES,       NUMSESSOUTBYTES,    0,  PERF_COUNTER_COUNTER},
    {TOTALSESSINPACKETS,    TOTALSESSINPACKETS, 0,  PERF_COUNTER_RAWCOUNT},
    {TOTALSESSOUTPACKETS,   TOTALSESSOUTPACKETS,0,  PERF_COUNTER_RAWCOUNT},
    {TOTALSESSINBYTES,      TOTALSESSINBYTES,   0,  PERF_COUNTER_RAWCOUNT},
    {TOTALSESSOUTBYTES,     TOTALSESSOUTBYTES,  0,  PERF_COUNTER_RAWCOUNT}
};


//
// Counters per active sessions
//
PerfCounterDef  InHttpCountersArray[] =
{
    {IN_HTTP_NUMSESSINPACKETS,      IN_HTTP_NUMSESSINPACKETS,   0,  PERF_COUNTER_COUNTER},
    {IN_HTTP_NUMSESSINBYTES,        IN_HTTP_NUMSESSINBYTES,     0,  PERF_COUNTER_COUNTER},
    {IN_HTTP_TOTALSESSINPACKETS,    IN_HTTP_TOTALSESSINPACKETS, 0,  PERF_COUNTER_RAWCOUNT},
    {IN_HTTP_TOTALSESSINBYTES,      IN_HTTP_TOTALSESSINBYTES,   0,  PERF_COUNTER_RAWCOUNT},
};


//
// Counters per active Outgoing HTTP sessions
//
PerfCounterDef  OutHttpSessionCountersArray[] =
{
    {OUT_HTTP_NUMSESSOUTPACKETS,     OUT_HTTP_NUMSESSOUTPACKETS,  0,  PERF_COUNTER_COUNTER},
    {OUT_HTTP_NUMSESSOUTBYTES,       OUT_HTTP_NUMSESSOUTBYTES,    0,  PERF_COUNTER_COUNTER},
    {OUT_HTTP_TOTALSESSOUTPACKETS,   OUT_HTTP_TOTALSESSOUTPACKETS,0,  PERF_COUNTER_RAWCOUNT},
    {OUT_HTTP_TOTALSESSOUTBYTES,     OUT_HTTP_TOTALSESSOUTBYTES,  0,  PERF_COUNTER_RAWCOUNT}
};

//
// Counters per active Outgoing Multicast sessions
//
PerfCounterDef  OutPgmSessionCountersArray[] =
{
    {OUT_PGM_NUMSESSOUTPACKETS,     OUT_PGM_NUMSESSOUTPACKETS,  0,  PERF_COUNTER_COUNTER},
    {OUT_PGM_NUMSESSOUTBYTES,       OUT_PGM_NUMSESSOUTBYTES,    0,  PERF_COUNTER_COUNTER},
    {OUT_PGM_TOTALSESSOUTPACKETS,   OUT_PGM_TOTALSESSOUTPACKETS,0,  PERF_COUNTER_RAWCOUNT},
    {OUT_PGM_TOTALSESSOUTBYTES,     OUT_PGM_TOTALSESSOUTBYTES,  0,  PERF_COUNTER_RAWCOUNT}
};


//
// Counters per active Outgoing Multicast sessions
//
PerfCounterDef  InPgmSessionCountersArray[] =
{
    {IN_PGM_NUMSESSINPACKETS,     IN_PGM_NUMSESSINPACKETS,  0,  PERF_COUNTER_COUNTER},
    {IN_PGM_NUMSESSINBYTES,       IN_PGM_NUMSESSINBYTES,    0,  PERF_COUNTER_COUNTER},
    {IN_PGM_TOTALSESSINPACKETS,   IN_PGM_TOTALSESSINPACKETS,0,  PERF_COUNTER_RAWCOUNT},
    {IN_PGM_TOTALSESSINBYTES,     IN_PGM_TOTALSESSINBYTES,  0,  PERF_COUNTER_RAWCOUNT}
};


//
// Counters per queue
//
PerfCounterDef  QueueCountersArray[] =
{
    {TOTALQUEUEINPACKETS,     TOTALQUEUEINPACKETS,     0,         PERF_COUNTER_RAWCOUNT},
    {TOTALQUEUEINBYTES,       TOTALQUEUEINBYTES,       (DWORD)-2, PERF_COUNTER_RAWCOUNT},
    {TOTALJOURNALINPACKETS,   TOTALJOURNALINPACKETS,   0,         PERF_COUNTER_RAWCOUNT},
    {TOTALJOURNALINBYTES,     TOTALJOURNALINBYTES,     (DWORD)-2, PERF_COUNTER_RAWCOUNT}
};

//
// DS Counters
//
PerfCounterDef  DSCountersArray[] =
{
    {NUMOFSYNCREQUESTS       ,NUMOFSYNCREQUESTS       ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFSYNCREPLIES        ,NUMOFSYNCREPLIES        ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFREPLREQRECV        ,NUMOFREPLREQRECV        ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFREPLREQSENT        ,NUMOFREPLREQSENT        ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFACCESSTOSRVR       ,NUMOFACCESSTOSRVR       ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFWRITEREQSENT       ,NUMOFWRITEREQSENT       ,0,  PERF_COUNTER_RAWCOUNT},
    {NUMOFERRRETURNEDTOAPP   ,NUMOFERRRETURNEDTOAPP   ,0,  PERF_COUNTER_RAWCOUNT}
};



/*Set up the object array*/
PerfObjectDef ObjectArray [] =
{
    {PERF_QM_OBJECT,				0                      ,QMOBJ,					QMOBJ,					QMCountersArray        ,sizeof (QMCountersArray)/sizeof (PerfCounterDef)},
    {PERF_QUEUE_OBJECT,				MAX_MONITORED_QUEUES   ,QUEUEOBJ,				QUEUEOBJ,				QueueCountersArray     ,sizeof (QueueCountersArray)/sizeof (PerfCounterDef)},
    {PERF_SESSION_OBJECT,			MAX_MONITORED_SESSIONS ,SESSIONOBJ,				SESSIONOBJ,				SessionCountersArray   ,sizeof (SessionCountersArray)/sizeof (PerfCounterDef)},
	{PERF_IN_HTTP_OBJECT,			0,						IN_HTTP_OBJ,            IN_HTTP_OBJ,            InHttpCountersArray,    sizeof (InHttpCountersArray)/sizeof(PerfCounterDef)},
	{PERF_OUT_HTTP_SESSION_OBJECT,	MAX_MONITORED_SESSIONS, OUT_HTTP_SESSION_OBJ,	OUT_HTTP_SESSION_OBJ,	OutHttpSessionCountersArray, sizeof (OutHttpSessionCountersArray)/sizeof (PerfCounterDef) },
	{PERF_OUT_PGM_SESSION_OBJECT,	MAX_MONITORED_SESSIONS, OUT_PGM_SESSION_OBJ,	OUT_PGM_SESSION_OBJ,	OutPgmSessionCountersArray, sizeof (OutPgmSessionCountersArray)/sizeof (PerfCounterDef) },
	{PERF_IN_PGM_SESSION_OBJECT,	MAX_MONITORED_SESSIONS, IN_PGM_SESSION_OBJ,		IN_PGM_SESSION_OBJ,		InPgmSessionCountersArray, sizeof (InPgmSessionCountersArray)/sizeof (PerfCounterDef) },
    {PERF_DS_OBJECT,				0                      ,DSOBJ,					DSOBJ,					DSCountersArray        ,sizeof (DSCountersArray)/sizeof (PerfCounterDef)}
};



DWORD dwPerfObjectsCount = sizeof(ObjectArray) / sizeof(ObjectArray[0]);
