2025-04-27 07:49:33 -04:00

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