summaryrefslogtreecommitdiff
path: root/ACE/ASNMP/asnmp/vb.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ASNMP/asnmp/vb.h')
-rw-r--r--ACE/ASNMP/asnmp/vb.h207
1 files changed, 207 insertions, 0 deletions
diff --git a/ACE/ASNMP/asnmp/vb.h b/ACE/ASNMP/asnmp/vb.h
new file mode 100644
index 00000000000..b82adb2bc0e
--- /dev/null
+++ b/ACE/ASNMP/asnmp/vb.h
@@ -0,0 +1,207 @@
+
+
+#ifndef VB_CLS_
+#define VB_CLS_
+//=============================================================================
+/**
+ * @file vb.h
+ *
+ * $Id$
+ *
+ * This module contains the class definition for the variable binding (VB)
+ * class. The VB class is an encapsulation of a SNMP VB. A VB object is
+ * composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid
+ * objects and thus requires the Oid class. To use this class,
+ * set oid, value then call valid() to be sure object was constructed correctly.
+ *
+ *
+ * @author Peter E Mellquist
+ */
+//=============================================================================
+
+/*===================================================================
+ Copyright (c) 1996
+ Hewlett-Packard Company
+
+ ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
+ Permission to use, copy, modify, distribute and/or sell this software
+ and/or its documentation is hereby granted without fee. User agrees
+ to display the above copyright notice and this license notice in all
+ copies of the software and any documentation of the software. User
+ agrees to assume all liability for the use of the software; Hewlett-Packard
+ makes no representations about the suitability of this software for any
+ purpose. It is provided "AS-IS without warranty of any kind,either express
+ or implied. User hereby grants a royalty-free license to any and all
+ derivatives based upon this software code base.
+=====================================================================*/
+
+//----[ external calls ]----------------------------------------------
+#include "ace/config-all.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "asnmp/smival.h"
+#include "asnmp/snmperrs.h" // V2c error def
+#include "asnmp/oid.h" // oid class def
+#include "asnmp/timetick.h" // time ticks
+#include "asnmp/counter.h" // counter
+#include "asnmp/gauge.h" // gauge class
+#include "asnmp/ctr64.h" // 64 bit counters
+#include "asnmp/octet.h" // octet class
+#include "asnmp/address.h" // address class def
+#include "asnmp/integer.h" // integer class
+
+
+//------------[ VB Class Def ]-------------------------------------
+// The Vb class is the encapsulation of the SNMP variable binding.
+// Variable binding lists in SNMP++ are represented as arrays of
+// Vb objects. Vb objects are passed to and from SNMP objects to
+// provide getting or setting MIB values.
+// The vb class keeps its own memory for objects and does not
+// utilize pointers to external data structures.
+//
+/**
+ * @class Vb
+ *
+ * @brief Implement the concrete Variable Bindings aka Varbind
+ * composite type. Varbinds hold 1 Oid and 1 Value (Any SMI value)
+ */
+class ASNMP_Export Vb
+{
+public:
+ /// constructor with no arguments
+ /// makes an vb, unitialized (does not make object valid)
+ Vb( void);
+
+ /// constructor to initialize the oid
+ /// makes a vb with oid portion initialized (does not make object valid)
+ Vb( const Oid &oid);
+
+ /// constructor to initialize the oid
+ /// makes a vb with oid portion and value portion initialized, (valid)
+ Vb( const Oid& vb, const SnmpSyntax &val, const SmiUINT32=SNMP_CLASS_SUCCESS);
+
+ /// copy constructor
+ Vb( const Vb &vb);
+
+ /**
+ * destructor
+ * if the vb has a oid or an octect string then
+ * the associated memory needs to be freed
+ */
+ ~Vb();
+
+ /// return validity of Vb object (both oid and value set return 1 else 0)
+ int valid() const;
+
+ /// assignment to another Vb object overloaded
+ Vb& operator=( const Vb &vb);
+
+ /// equivlence operator overloaded
+ friend ASNMP_Export bool operator==( const Vb &lhs, const Vb &rhs);
+
+ //-----[ set oid / get oid part]------------------------------------------
+
+ /// set value oid only with another oid
+ void set_oid( const Oid& oid);
+
+ /// get oid portion
+ void get_oid( Oid &oid) const;
+
+ //-----[ set value part]--------------------------------------------------
+
+ /// set a Vb null, if its not already
+ void set_null();
+
+ /// returns 0 on success and a value
+ void set_value( const TimeTicks& ticks);
+
+ /// returns 0 on success and a value
+ void set_value( const Oid& oid);
+
+ /// returns 0 on success and a value
+ void set_value( const Counter32& ctr);
+
+ /// returns 0 on success and a value
+ void set_value( const Counter64& ctr);
+
+ /// returns 0 on success and a value
+ void set_value( const Gauge32& ctr);
+
+ /// returns 0 on success and a value
+ void set_value( const SnmpUInt32& ctr);
+
+ /// returns 0 on success and a value
+ void set_value( const SnmpInt32& ctr);
+
+ /// get an octet string object
+ void set_value( const OctetStr& oct_str);
+
+ //----[ get value ]------------------------------------------------
+
+ /// returns 0 on success and a value
+ int get_value( TimeTicks& ticks);
+
+ /// returns 0 on success and a value
+ int get_value( Oid& oid);
+
+ /// returns 0 on success and a value
+ int get_value( Counter32& ctr);
+
+ /// returns 0 on success and a value
+ int get_value( Counter64& ctr);
+
+ /// returns 0 on success and a value
+ int get_value( Gauge32& ctr);
+
+ /// returns 0 on success and a value
+ int get_value( SnmpUInt32& ctr);
+
+ /// returns 0 on success and a value
+ int get_value( SnmpInt32& ctr);
+
+ /// get an octet string object
+ int get_value( OctetStr& oct_str);
+
+ // escape hatch
+ /// for other derived types that can be casted
+ void set_value( const SnmpSyntax &val);
+
+ /// gets a general value
+ int get_value( SnmpSyntax &val);
+
+ /// return the current syntax
+ /// Or.. if a V2 VB exception is present then return the exception value
+ SmiUINT32 get_syntax();
+
+ /// set the exception status
+ friend ASNMP_Export void set_exception_status( Vb *vb, const SmiUINT32 status);
+
+ /// return fomatted version of this object
+ const char *to_string();
+
+ /// returns a formatted version of the value
+ const char *to_string_value();
+
+ /// returns a formatted version of the value
+ const char *to_string_oid();
+
+protected:
+ /// display vb as [ oid / value ]
+ char *output_;
+
+ /// a vb is made up of a oid
+ Oid iv_vb_oid_;
+
+ /// and a value...
+ SnmpSyntax *iv_vb_value_;
+
+ /// are there any vb exceptions??
+ SmiUINT32 exception_status_;
+
+ void free_vb();
+};
+
+#endif // VB_CLS_