windows-nt/Source/XPSP1/NT/admin/hmonitor/snapin/eventmanager.h
2020-09-26 16:20:57 +08:00

78 lines
3.5 KiB
C++

// EventManager.h: interface for the CEventManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_EVENTMANAGER_H__988BB45B_8C93_11D3_BE83_0000F87A3912__INCLUDED_)
#define AFX_EVENTMANAGER_H__988BB45B_8C93_11D3_BE83_0000F87A3912__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SystemEventContainer.h"
#include "WbemClassObject.h"
#include "Tree.h"
#include "DataElementEvent.h"
#include "RuleEvent.h"
#include "HMStatistics.h"
#include "DataPointStatistics.h"
#include "DataPointEventContainer.h"
//////////////////////////////////////////////////////////////////////
// CEventManager - manages events, status and statistics for console
class CEventManager : public CObject
{
// Construction/Destruction
public:
CEventManager();
virtual ~CEventManager();
// Operations
public:
void ProcessEvent(CWbemClassObject* pEventObject);
void ProcessUnknownEvent(const CString& sSystemName, CRuleEvent* pEvent);
void ProcessActionEvent(CWbemClassObject* pActionEventObject);
void ProcessStatisticEvent(CWbemClassObject* pStatObject);
void GetEventContainer(const CString& sSystemName, const CString& sGuid, CEventContainer*& pContainer);
void DeleteEvents(const CString& sSystemName, const CString& sStatusGuid);
void AddContainer(const CString& sSystemName, const CString& sParentGuid, const CString& sGuid, CHMObject* pObject, CRuntimeClass* pClass = RUNTIME_CLASS(CEventContainer));
void RemoveContainer(const CString& sSystemName, const CString& sGuid);
void AddSystemContainer(const CString& sParentGuid, const CString& sSystemName, CHMObject* pObject);
void RemoveSystemContainer(const CString& sSystemName);
void AddSystemShortcutAssociation(const CString& sParentGuid, const CString& sSystemName);
void RemoveSystemShortcutAssociation(const CString& sParentGuid, const CString& sSystemName);
int GetStatus(const CString& sSystemName, const CString& sGuid);
int GetSystemStatus(const CString& sSystemName);
void ActivateStatisticsEvents(const CString& sSystemName, const CString& sGuid);
void DeactivateStatisticsEvents(const CString& sSystemName, const CString& sGuid);
void ActivateSystemEventListener(const CString& sSystemName);
protected:
void ProcessSystemStatusEvent(CWbemClassObject* pEventObject);
void ProcessDataGroupStatusEvent(CWbemClassObject* pEventObject);
void ProcessDataElementStatusEvent(CWbemClassObject* pEventObject, EventArray& NewEvents);
void ProcessRuleStatusEvent(CWbemClassObject* pEventObject);
void ProcessRuleStatusInstanceEvent(CWbemClassObject* pEventObject, EventArray& NewEvents);
void DeleteEvents(CTreeNode<CEventContainer*>* pNode,const CString& sSystemName, const CString& sStatusGuid);
CString GetCompositeGuid(const CString& sSystemName, const CString& sGuid);
void PropogateStatisticsToChildren(const CString& sSystemName, const CString& sParentGuid, StatsArray& Statistics);
// Attributes
protected:
CTree<CEventContainer*> m_EventContainers; // tree of event containers
CTypedPtrMap<CMapStringToPtr,CString,CTreeNode<CEventContainer*>*> m_GuidToContainerMap; // maps Guid of a config object to a event container
CTypedPtrMap<CMapStringToPtr,CString,CTreeNode<CEventContainer*>*> m_SystemNameToContainerMap; // maps the system name to a system event container
};
#include "EventManager.inl"
extern CEventManager theEvtManager;
inline CEventManager* EvtGetEventManager()
{
return &theEvtManager;
}
#endif // !defined(AFX_EVENTMANAGER_H__988BB45B_8C93_11D3_BE83_0000F87A3912__INCLUDED_)