| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include "stdafx.h"
- #include "SpBase.h"
- typedef ULONG LogTypeSeverity[Log_Debug + 1][Severity_High + 1];
- class CLogSubscribeEntity : public CEntityBase
- , public ITimerListener
- , public ISysVarListener
- , public IBroadcastListener
- , public ILogListener
- {
- public:
- CLogSubscribeEntity():m_logCalCount(NULL) {
- m_logCalCount = new LogTypeSeverity[0x1000];
- }
- virtual ~CLogSubscribeEntity() {
- if (m_logCalCount)
- delete[] m_logCalCount;
- }
- virtual const char *GetEntityName() const { return "logSubscribe"; }
- /*for {ITimerListener} implement*/
- void OnTimeout(DWORD dwTimerID)
- {
- LOG_TRACE("timeout, id: %d", dwTimerID);
- }
- /*for {ISysVarListener} implement */
- virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName)
- {
- LOG_TRACE("entity:%s key:%s value:%s, old_value:%s", pszEntityName, pszKey, pszValue, pszOldValue);
- }
- virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext)
- {
- LOG_FUNCTION();
- ErrorCodeEnum ec = Error_Succeed;
- Dbg("to subscribe all entity log.");
- GetFunction()->SubscribeLog(m_logSubUUID, this, Log_Ignore, Severity_None, Error_IgnoreAll, -2, NULL, false);
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- virtual void OnStarted()
- {
- LOG_FUNCTION();
- }
- virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
- {
- LOG_FUNCTION();
- Dbg("to unsubscribe all entity log.");
- GetFunction()->UnsubscribeLog(m_logSubUUID);
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- void OnBroadcastEvent(CUUID SubID,
- const char* pszEntityName,
- DWORD dwMessageId,
- DWORD dwMessageSignature,
- CAutoBuffer Buffer)
- {
- Dbg("OnBroadcastEvent: %s, %s, 0x%X, 0x%X, buffer size: %u", (LPCTSTR)SubID.ToString(), pszEntityName,
- dwMessageId, dwMessageSignature, Buffer.GetCount());
- }
- void OnLog(const CAutoArray<CUUID>& SubIDs
- , const CUUID nLogID
- , const LogTypeEnum eLogType
- , const SeverityLevelEnum eLevel
- , const DWORD dwSysError, const DWORD dwUserCode
- , const DWORD dwEntityInstanceID, const WORD wEntityDevelID
- , const CAutoArray<DWORD>& Param
- , const char* pszEntityName, const char* pszModuleName, const char* pszMessage)
- {
- if (m_logCalCount) {
- m_logCalCount[wEntityDevelID][eLogType][eLevel]++;
- }
- Dbg("OnLog(%s, %d, %d, 0x%X, 0x%X, 0x%X, 0x%04X, %s, %s, %s",
- (LPCTSTR)nLogID.ToString(), eLogType, eLevel, dwSysError, dwUserCode,
- dwEntityInstanceID, wEntityDevelID, pszEntityName, pszModuleName, pszMessage);
- if (Param.GetCount() > 0) {
- for (int i = 0; i < Param.GetCount(); ++i) {
- Dbg("Params[%d]: %d", i, Param[i]);
- }
- }
- }
- private:
- CUUID m_logSubUUID;
- LogTypeSeverity* m_logCalCount;
- };
- SP_BEGIN_ENTITY_MAP()
- SP_ENTITY(CLogSubscribeEntity)
- SP_END_ENTITY_MAP()
|