]> git.ipfire.org Git - thirdparty/squid.git/blob - src/snmp/Var.h
Enable source-formatting tools to collapse multiple whitelines in the source to one.
[thirdparty/squid.git] / src / snmp / Var.h
1 /*
2 * $Id$
3 *
4 * DEBUG: section 49 SNMP Interface
5 *
6 */
7
8 #ifndef SQUID_SNMPX_VAR_H
9 #define SQUID_SNMPX_VAR_H
10
11 #include "ipc/forward.h"
12 #include "Range.h"
13 #include "snmp_vars.h"
14
15
16 namespace Snmp
17 {
18
19 /// variable_list wrapper implement the feature to change
20 /// the name/value of variable and to pack/unpack message
21 class Var: public variable_list
22 {
23 public:
24 Var();
25 Var(const Var& var);
26 Var& operator = (const Var& var);
27 ~Var();
28
29 Var& operator += (const Var& var);
30 Var& operator /= (int num);
31 bool operator < (const Var& var) const;
32 bool operator > (const Var& var) const;
33
34 void pack(Ipc::TypedMsgHdr& msg) const; ///< prepare for sendmsg()
35 void unpack(const Ipc::TypedMsgHdr& msg); ///< restore struct from the message
36
37 Range<const oid*> getName() const; ///< returns variable name
38 void setName(const Range<const oid*>& aName); ///< set new variable name
39 void clearName(); ///< clear variable name
40
41 bool isNull() const;
42
43 int asInt() const; ///< returns variable value as integer
44 unsigned int asGauge() const; ///< returns variable value as unsigned int
45 int asCounter() const; ///< returns variable value as Counter32
46 long long int asCounter64() const; ///< returns variable value as Counter64
47 unsigned int asTimeTicks() const; ///< returns variable value as time ticks
48 Range<const oid*> asObject() const; ///< returns variable value as object oid
49 Range<const u_char*> asString() const; ///< returns variable value as chars string
50
51 void setInt(int value); ///< assign int value to variable
52 void setCounter(int value); ///< assign Counter32 value to variable
53 void setGauge(unsigned int value); ///< assign unsigned int value to variable
54 void setString(const Range<const u_char*>& string); ///< assign string to variable
55 void setObject(const Range<const oid*>& object); ///< assign object oid to variable
56 void setTimeTicks(unsigned int ticks); ///<assign unsigned int (time) value to variable
57 void setCounter64(long long int counter); ///< assign Counter64 value to variable
58
59 void copyValue(const Var& var); ///< copy variable from another one
60 void clearValue(); ///< clear .val member
61 void clear(); ///< clear all internal members
62
63 private:
64 void init(); ///< initialize members
65 void assign(const Var& var); ///< perform full assignment
66 void setValue(const void* value, int length, int aType); ///< set new variable value
67 };
68
69 } // namespace Snmp
70
71 #endif /* SQUID_SNMPX_VAR_H */