SNMPpp  v0.0.3-20-7eeb228
Classes, methods, and functions to use net-snmp from C++
Varlist.hpp
Go to the documentation of this file.
1 // SNMPpp: https://sourceforge.net/p/snmppp/
2 // SNMPpp project uses the MIT license. See LICENSE for details.
3 // @copyright Copyright (C) 2013 Stephane Charette <stephanecharette@gmail.com>
4 
5 #pragma once
6 
7 #include <SNMPpp/net-snmppp.hpp>
8 #include <SNMPpp/OID.hpp>
9 
10 
11 namespace SNMPpp
12 {
22  class Varlist
23  {
24  public:
25 
38  virtual ~Varlist( void );
39 
41  Varlist( void );
42 
47  Varlist( netsnmp_variable_list *vl );
48 
50  virtual void free( void );
51 
61  virtual void clear( void ) { varlist = NULL; }
62 
64  virtual operator netsnmp_variable_list* ( void ) { return varlist; }
65 
67  virtual operator netsnmp_variable_list**( void ) { return &varlist; }
68 
73  virtual size_t size( void ) const { return count_varbinds( varlist ); }
74 
79  virtual bool empty( void ) const { return varlist == NULL; }
80 
86  virtual const Varlist &getOids( SNMPpp::VecOID &v ) const;
87 
93  virtual const Varlist &getOids( SNMPpp::SetOID &s ) const;
94 
96  virtual MapOidVarList getMap( void ) const;
97 
99  virtual bool contains( const SNMPpp::OID &o ) const;
100 
106  virtual Varlist &addNullVar( const SNMPpp::OID &o );
107 
112  virtual Varlist &addNullVars( const SNMPpp::SetOID &s );
113 
118  virtual Varlist &addNullVars( const SNMPpp::VecOID &v );
119 
128  virtual const netsnmp_variable_list *at( const SNMPpp::OID &o ) const;
129 
131  virtual netsnmp_variable_list *operator[]( const size_t idx );
132 
134  virtual SNMPpp::OID firstOID( void ) const;
135 
136  // The next few methods help extract information from Varlists
137  // when there happens to be multiple objects in the linked list.
138 
160  virtual int asnType( const SNMPpp::OID &o ) const { return at(o)->type; }
161 
169  virtual const netsnmp_vardata &valueAt( const SNMPpp::OID &o ) const { return at(o)->val; }
170 
175  virtual bool getBool( const SNMPpp::OID &o ) const;
176 
181  virtual long getLong( const SNMPpp::OID &o ) const;
182 
186  virtual std::string getString( const SNMPpp::OID &o ) const;
187 
192  virtual SNMPpp::OID getOID( const SNMPpp::OID &o ) const;
193 
199  virtual std::string asString( const SNMPpp::OID &o ) const;
200 
201  // The next few methods help extract information from Varlists
202  // when there happens to be a single object in the linked list.
203 
210  virtual int asnType( void ) const { return asnType( firstOID() ); }
211 
218  virtual const netsnmp_vardata &value( void ) const { return valueAt( firstOID() ); }
219 
226  virtual bool getBool( void ) const { return getBool( firstOID() ); }
227 
234  virtual long getLong( void ) const { return getLong( firstOID() ); }
235 
241  virtual std::string getString( void ) const { return getString( firstOID() ); }
242 
249  virtual SNMPpp::OID getOID( void ) const { return getOID( firstOID() ); }
250 
256  virtual std::string asString( void ) const { return asString( firstOID() ); }
257 
258  protected:
259 
261  netsnmp_variable_list *varlist;
262  };
263 };
264 
265 
269 std::ostream &operator<<( std::ostream &os, const SNMPpp::Varlist &varlist );
virtual long getLong(void) const
Similar to SNMPpp::Varlist::getLong( const SNMPpp::OID &o ) const but if the varlist contains multipl...
Definition: Varlist.hpp:234
virtual const Varlist & getOids(SNMPpp::VecOID &v) const
Get a std::vector of all the OIDs in the varlist.
Definition: Varlist.cpp:55
All net-snmp includes needed by SNMPpp can be easily included by using net-snmppp.hpp.
virtual Varlist & addNullVars(const SNMPpp::SetOID &s)
Same as addNullVar(), but allows multiple OIDs to be added at once by using a std::set of OID objects...
Definition: Varlist.cpp:119
virtual ~Varlist(void)
Destructor.
Definition: Varlist.cpp:9
virtual const netsnmp_vardata & valueAt(const SNMPpp::OID &o) const
Retrieve the net-snmp value structure associated with an OID.
Definition: Varlist.hpp:169
Definition: Get.hpp:13
virtual std::string asString(void) const
Similar to SNMPpp::Varlist::asString( const SNMPpp::OID &o ) const but if the varlist contains multip...
Definition: Varlist.hpp:256
netsnmp_variable_list * varlist
This is the basic varlist pointer from net-snmp. Beware, this pointer will be NULL when a varlist is ...
Definition: Varlist.hpp:261
virtual int asnType(const SNMPpp::OID &o) const
Return the ASN type for the given OID.
Definition: Varlist.hpp:160
virtual bool getBool(void) const
Similar to SNMP::Varlist::getBool( const SNMPpp::OID &o ) const but if the varlist contains multiple ...
Definition: Varlist.hpp:226
virtual void clear(void)
If a net-snmp function has been called which we know has already freed the netsmp_varlist pointer...
Definition: Varlist.hpp:61
virtual int asnType(void) const
Similar to SNMPpp::Varlist::asnType( const SNMPpp::OID &o ) const but if the varlist contains multipl...
Definition: Varlist.hpp:210
virtual const netsnmp_variable_list * at(const SNMPpp::OID &o) const
Return the underlying netsnmp_variable_list pointer which describes the given OID object...
Definition: Varlist.cpp:144
std::ostream & operator<<(std::ostream &os, const SNMPpp::Varlist &varlist)
Can be used to log or display some debugging information on the varlist, including all OIDs contained...
Definition: Varlist.cpp:296
std::set< OID > SetOID
A std::set of OIDs.
Definition: OID.hpp:317
virtual netsnmp_variable_list * operator[](const size_t idx)
Return the [N]th netsnmp_variable_list pointer.
Definition: Varlist.cpp:166
virtual std::string getString(void) const
Similar to SNMPpp::Varlist::getString( const SNMPpp::OID &o ) const but if the varlist contains multi...
Definition: Varlist.hpp:241
virtual size_t size(void) const
Return the number of variables in this object.
Definition: Varlist.hpp:73
virtual SNMPpp::OID getOID(void) const
Similar to SNMPpp::Varlist::getOID( const SNMPpp::OID &o ) const but if the varlist contains multiple...
Definition: Varlist.hpp:249
virtual void free(void)
Free up the net-snmp structure by calling snmp_free_varbind().
Definition: Varlist.cpp:30
Wrapper for net-snmp&#39;s snmp_variable_list pointer.
Definition: Varlist.hpp:22
virtual SNMPpp::OID firstOID(void) const
Return the first OID object in the varlist. This will throw if the varlist is empty.
Definition: Varlist.cpp:185
virtual const netsnmp_vardata & value(void) const
Similar to SNMPpp::Varlist::valueAt( const SNMPpp::OID &o ) const but if the varlist contains multipl...
Definition: Varlist.hpp:218
virtual bool empty(void) const
Return TRUE if the netsnmp_variable_list pointer is NULL.
Definition: Varlist.hpp:79
virtual MapOidVarList getMap(void) const
Get a map of OID -> net-snmp&#39;s varlist for every OID in this varlist.
Definition: Varlist.cpp:68
virtual Varlist & addNullVar(const SNMPpp::OID &o)
Equivalent to snmp_add_null_var() which adds a placeholder in the PDU for this OID.
Definition: Varlist.cpp:100
Varlist(void)
Create a new object. The underlying netsnmp_variable_list pointer will be NULL until an OID is added ...
Definition: Varlist.cpp:15
Wrapper for net-snmp&#39;s OID arrays.
Definition: OID.hpp:26
virtual bool contains(const SNMPpp::OID &o) const
See if the given OID is in the varlist.
Definition: Varlist.cpp:81
std::map< SNMPpp::OID, netsnmp_variable_list * > MapOidVarList
A std::map where the OID is the key and the value is a net-snmp variable list. This is used by SNMPpp...
Definition: OID.hpp:323
std::vector< OID > VecOID
A std::vector of OIDs.
Definition: OID.hpp:320