00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _agentx_request_h_
00023 #define _agentx_request_h_
00024
00025 #include <agentx_pp/agentx.h>
00026 #include <agent_pp/request.h>
00027 #include <agent_pp/vacm_class.h>
00028
00029 #ifdef AGENTPP_NAMESPACE
00030 namespace Agentpp {
00031 #endif
00032
00033 class NoVacm: public Vacm {
00034 public:
00035 NoVacm();
00036 virtual ~NoVacm();
00037
00038 virtual int isAccessAllowed(int model, NS_SNMP OctetStr name, int level,
00039 int viewType,
00040 NS_SNMP OctetStr context, Oidx o)
00041 { return VACM_accessAllowed; }
00042
00043 virtual int isAccessAllowed(NS_SNMP OctetStr viewName, Oidx o)
00044 { return VACM_accessAllowed; }
00045 };
00046
00057 class AGENTXPP_DECL AgentXRequest: public Request {
00058 friend class AgentXRequestList;
00059 friend class SubAgentXMib;
00060 public:
00061
00068 AgentXRequest(const AgentXPdu&);
00069
00073 virtual ~AgentXRequest();
00074
00083 virtual Oidx get_oid(int);
00084
00085 virtual void set_oid(const Oidx&, int);
00086
00093 virtual unsigned short get_agentx_type()
00094 { return ((AgentXPdu*)pdu)->get_agentx_type(); }
00095
00102 AgentXPdu* get_agentx_pdu() { return (AgentXPdu*)pdu; }
00103
00110 virtual boolean add_rep_row();
00111
00119 virtual void trim_request(int);
00120
00125 void lock();
00126
00130 void unlock();
00131
00132 private:
00133 Synchronized mutex;
00134 };
00135
00136
00137
00138
00146 class AGENTXPP_DECL AgentXRequestList: public RequestList {
00147
00148 public:
00152 AgentXRequestList();
00153
00162 AgentXRequestList(AgentXSlave*);
00163
00167 virtual ~AgentXRequestList();
00168
00179 virtual Request* receive(int);
00180
00186 virtual void answer(Request*);
00187
00194 void remove(Request*);
00195
00202 AgentXSlave* get_agentx() { return agentx; }
00203
00216 void timeout_set_requests();
00217
00223 void terminate_set_requests();
00224
00225 protected:
00226
00233 virtual Request* add_request(Request*);
00234
00235
00236
00237 AgentXSlave* agentx;
00238 };
00239
00240 #ifdef AGENTPP_NAMESPACE
00241 }
00242 #endif
00243
00244
00245 #endif