mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
3.5 KiB
77 lines
3.5 KiB
// 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_)
|