00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _agentx_node_h_
00024 #define _agentx_node_h_
00025
00026 #include <agentx_pp/agentx_reg.h>
00027 #include <agentx_pp/agentx_pdu.h>
00028 #include <agent_pp/mib.h>
00029
00030 #ifdef AGENTPP_NAMESPACE
00031 namespace Agentpp {
00032 #endif
00033
00034
00035
00036
00037 class MasterAgentXMib;
00038
00039 class AgentXNode: public MibEntry {
00040
00041 friend class MasterAgentXMib;
00042
00043 public:
00054 AgentXNode(AgentXRegEntry*, const AgentXRegion&);
00055
00062 AgentXNode(const AgentXNode&);
00063
00067 virtual ~AgentXNode();
00068
00077 virtual void add_registration(AgentXRegEntry*);
00078
00089 virtual boolean remove_registration(const AgentXRegEntry&);
00090
00100 virtual boolean shrink(const Oidx&);
00101
00111 virtual boolean expand(const Oidx&);
00112
00119 virtual mib_type type() const;
00120
00126 virtual MibEntryPtr clone();
00127
00128
00129
00130
00137 virtual void get_request(Request*, int);
00138
00145 virtual void get_next_request(Request*, int);
00146
00155 virtual int commit_set_request(Request*, int);
00156
00165 virtual int prepare_set_request(Request*, int&);
00166
00175 virtual int undo_set_request(Request*, int&);
00176
00184 virtual void cleanup_set_request(Request*, int&);
00185
00192 virtual boolean is_empty() { return FALSE; }
00193
00201 virtual OidxPtr max_key();
00202
00216 virtual Oidx find_succ(const Oidx&, Request* req = 0);
00217
00226 static boolean is_agentx(const MibEntry&);
00227
00234 u_int registration_count() { return origReg.size(); }
00235
00242 AgentXRegEntry* active_registration()
00243 { return origReg.first(); }
00244
00251 AgentXRegion get_region() { return region; }
00252
00253 protected:
00254
00262 void set_region(const AgentXRegion&);
00263
00272 virtual void get_request(Request*, int, u_char);
00273
00283 virtual void set_request(Request*, int, u_char);
00284
00291 void set_back_reference(MasterAgentXMib*);
00292
00293
00294 OrderedList<AgentXRegEntry> origReg;
00295 AgentXRegion region;
00296
00297 boolean singleInstance;
00298 MasterAgentXMib* backReference;
00299 };
00300
00301 #ifdef AGENTPP_NAMESPACE
00302 }
00303 #endif
00304
00305
00306 #endif