132 lines
2.4 KiB
C++
132 lines
2.4 KiB
C++
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
|
|
#ifndef _SNMP_EVT_PROV_EVTTHRD_H
|
|
#define _SNMP_EVT_PROV_EVTTHRD_H
|
|
|
|
class CTrapEventProvider;
|
|
class CEventProviderThread;
|
|
class CMapToEvent;
|
|
|
|
class MySnmpV1Security : public SnmpV1Security
|
|
{
|
|
public:
|
|
MySnmpV1Security(const SnmpV1Security& sec) : SnmpV1Security(sec){}
|
|
const char* GetName()const {return GetCommunityName();}
|
|
};
|
|
|
|
|
|
class CControlObjectMap : public CMap< UINT, UINT, CTrapEventProvider*, CTrapEventProvider* >
|
|
{
|
|
private:
|
|
|
|
UINT HashKey(UINT key) { return key; }
|
|
CCriticalSection m_Lock;
|
|
|
|
public:
|
|
|
|
BOOL Lock() { return m_Lock.Lock(); }
|
|
BOOL Unlock() { return m_Lock.Unlock(); }
|
|
};
|
|
|
|
|
|
class CTrapListener : public SnmpTrapReceiver
|
|
{
|
|
|
|
private:
|
|
|
|
CEventProviderThread* m_pParent;
|
|
LONG m_Ref;
|
|
|
|
|
|
public:
|
|
|
|
CTrapListener(CEventProviderThread* parentptr);
|
|
|
|
void Receive(SnmpTransportAddress &sender_addr,
|
|
SnmpSecurity &security_context,
|
|
SnmpVarBindList &vbList);
|
|
void Destroy();
|
|
|
|
~CTrapListener() {}
|
|
};
|
|
|
|
class CTrapData
|
|
{
|
|
private:
|
|
LONG m_Ref;
|
|
|
|
public:
|
|
|
|
char *m_sender_addr;
|
|
char *m_security_context;
|
|
char *m_trap_oid;
|
|
char *m_transport;
|
|
SnmpVarBindList m_variable_bindings;
|
|
|
|
CTrapData (const char* sender_addr,
|
|
const char* security_Context,
|
|
const char* snmpTrapOid,
|
|
const char* trnsp,
|
|
SnmpVarBindList& vbList);
|
|
LONG AddRef();
|
|
LONG Release();
|
|
|
|
~CTrapData();
|
|
|
|
};
|
|
|
|
|
|
class CTrapProcessTaskObject : public SnmpTaskObject
|
|
{
|
|
private:
|
|
|
|
CTrapData *m_trap_data;
|
|
CTrapEventProvider *m_Cntrl;
|
|
|
|
protected:
|
|
public:
|
|
|
|
CTrapProcessTaskObject (CTrapData *pTData, CTrapEventProvider* pCntrl) ;
|
|
|
|
~CTrapProcessTaskObject();
|
|
|
|
void Process () ;
|
|
|
|
} ;
|
|
|
|
class CEventProviderWorkerThread : public SnmpThreadObject
|
|
{
|
|
private:
|
|
|
|
void Initialise();
|
|
void Uninitialise();
|
|
|
|
};
|
|
|
|
class CEventProviderThread : public SnmpThreadObject
|
|
{
|
|
private:
|
|
|
|
CTrapListener* m_Ear;
|
|
CControlObjectMap m_ControlObjects;
|
|
|
|
void Initialise ();
|
|
void Uninitialise ();
|
|
|
|
public:
|
|
|
|
BOOL Register(CTrapEventProvider* prov);
|
|
void UnRegister(CTrapEventProvider* prov);
|
|
|
|
virtual void ProcessTrap(const char* sender_addr,
|
|
const char* security_Context,
|
|
const char* snmpTrapOid,
|
|
const char* trnsp,
|
|
SnmpVarBindList& vbList);
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //_SNMP_EVT_PROV_EVTTHRD_H
|
|
|