//
// MODULE: ApgtsCounters.h
//
// PURPOSE: interface and implementation for the CApgtsCounters class
//
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
//
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com
//
// AUTHOR: Joe Mabel
// 
// ORIGINAL DATE: 10-01-1998
//
// NOTES: 
//
// Version	Date		By		Comments
//--------------------------------------------------------------------
// V3.0		10-01-98	JM		Original
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_APGTSCOUNTERS_H__E3FD52E9_5944_11D2_9603_00C04FC22ADD__INCLUDED_)
#define AFX_APGTSCOUNTERS_H__E3FD52E9_5944_11D2_9603_00C04FC22ADD__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "counter.h"

// There should be exactly one (global) instance of this class.
// Any other class C that needs access to these counters should get a pointer to
//	the relevant counter(s) in its own constructor and thereafter access the counter
//	through the member.
// If class C only needs to increment the counter, it's pointer to the CHourlyDailyCounter
//	should be of type CAbstractCounter.
// A single .cpp file should define APGTS_COUNTER_OWNER before including the present file.
class CApgtsCounters
{
public:
	CHourlyDailyCounter m_ProgramContemporary; // really just used to track when program started.
	CHourlyDailyCounter m_StatusAccesses;
	CHourlyDailyCounter m_OperatorActions;
	CHourlyDailyCounter m_AllAccessesStart;
	CHourlyDailyCounter m_AllAccessesFinish;
	CHourlyDailyCounter m_QueueFullRejections;
	CHourlyDailyCounter m_UnknownTopics;
	CHourlyDailyCounter m_LoggedErrors;

	CApgtsCounters()
		:	m_ProgramContemporary(CCounterLocation::eIdProgramContemporary),
			m_StatusAccesses(CCounterLocation::eIdStatusAccess),
			m_OperatorActions(CCounterLocation::eIdActionAccess),
			m_AllAccessesStart(CCounterLocation::eIdTotalAccessStart),
			m_AllAccessesFinish(CCounterLocation::eIdTotalAccessFinish),
			m_QueueFullRejections(CCounterLocation::eIdRequestRejected),
			m_UnknownTopics(CCounterLocation::eIdRequestUnknown),
			m_LoggedErrors(CCounterLocation::eIdErrorLogged)
	{}
	~CApgtsCounters() {}
};

#ifdef APGTS_COUNTER_OWNER
	CApgtsCounters g_ApgtsCounters;
#else
	extern CApgtsCounters g_ApgtsCounters;
#endif

#endif // !defined(AFX_APGTSCOUNTERS_H__E3FD52E9_5944_11D2_9603_00C04FC22ADD__INCLUDED_)