AgentXcpp  Revision:0.1.1
API Documentation
 All Classes Functions Variables Friends Pages
agentxcpp::oid Class Reference

Represents an SNMP object identifier (OID). More...

#include <oid.hpp>

Inheritance diagram for agentxcpp::oid:
[legend]

List of all members.

Public Member Functions

 oid ()
 Default Constructor.
 oid (std::string id)
 Initialize an oid object with an OID in string format.
 oid (const oid &o, std::string id)
 Initialize an oid object with another oid plus an OID in string format.
oidoperator= (const oid &o)
 Assignment operator.
bool operator< (const oid &o) const
 The less-than operator.
bool operator== (const oid &o) const
 The equal-operator.
bool operator!= (const oid &o) const
 The not-equal-operator for oids.
bool operator> (const oid &o) const
 The greater-than operator.
bool contains (const oid &id)
 Checks whether the given oid is in the subtree of this oid.
virtual oid get ()
 Obtain the current value for the object.
- Public Member Functions inherited from agentxcpp::variable
virtual ~variable ()
 Destructor.

Public Attributes

const oid iso_oid ("1")
 The 'iso' OID according to RFC 1155.
const oid ccitt_oid ("0")
 The 'ccitt' OID according to RFC 1155.
const oid joint_iso_ccitt_oid ("2")
 The 'joint.iso.ccitt' OID according to RFC 1155.
const oid org_oid (iso_oid,"3")
 The 'iso.org' OID according to RFC 1155.
const oid dod_oid (org_oid,"6")
 The 'iso.org.dod' OID according to RFC 1155.
const oid internet_oid (dod_oid,"1")
 The 'iso.org.dod.internet' OID according to RFC 1155.
const oid directory_oid (internet_oid,"1")
 The 'iso.org.dod.internet.directory' OID according to RFC 1155.
const oid mgmt_oid (internet_oid,"2")
 The 'iso.org.dod.internet.mgmt' OID according to RFC 1155.
const oid experimental_oid (internet_oid,"3")
 The 'iso.org.dod.internet.experimental' OID according to RFC 1155.
const oid private_oid (internet_oid,"4")
 The 'iso.org.dod.internet.private' OID according to RFC 1155.
const oid enterprises_oid (private_oid,"1")
 The 'iso.org.dod.internet.private.enterprises' OID according to RFC 1155.
- Public Attributes inherited from std::vector< T >
elements
 STL member.

Friends

std::ostream & operator<< (std::ostream &out, const agentxcpp::oid &o)
 The output operator for the oid class.

Detailed Description

Represents an SNMP object identifier (OID).

This class represents an OID. OID's are sequences of sub-identifiers, which are integers.

This class provides constructors taking a string which contains an OID. For example, this works:

oid myCompany = oid("1.3.6.1.4.1.355");

Also a constructor is provided which takes an oid and a string and concatenates them, so this works also:

oid myObject = oid(myCompany, "1.1.3.0");

In addition, some common oid's are provided as constants, e.g. 'enterprises_oid', so the following will also work (note that the second argument is a string, not an integer!):

oid yourCompany = oid(enterprises_oid, "42"); // second param is a string!

The string given to the constructors must have a valid syntax. If a malformed string is provided, inval_param is thrown and the object is not constructed. For example, the following strings are malformed:

"1,3,6" // wrong separator (must be a period)
"1.3.6." // trailing character at the end
"1.3.6.1.4.1.123456789123" // last subid is too big (must fit in a 32 bit unsigned integer)

However, the following strings are accepted:

"1.3.6"
"1" // a single subid is ok
"1.3.6.1.4.1.42.1.0" // 0 as subid is ok
"" // empty string is ok

This class inherits from std:vector<uint32_t>, which means that an oid object can be manipulated the same way as a std::vector<> can be manipulated:

oid theirCompany = enterprises_oid;
theirCompany.push_back(23); // Don't use a string here!

Constructor & Destructor Documentation

agentxcpp::oid::oid ( )
inline

Default Constructor.

This constructs an empty oid (the null oid).

           \exception None.
oid::oid ( std::string  id)

Initialize an oid object with an OID in string format.

This constructor takes a string and initializes the oid object with the OID contained within this string. The format of the string is described above.

           \param id The initial object identifier.

           \exception inval_param If the string is malformed.
oid::oid ( const oid o,
std::string  id 
)

Initialize an oid object with another oid plus an OID in string format.

All subid's are copied from 'o'. Then, the OID contained within the string 'id' is appended. The format of the string is described in the documentation of this class.

           \param o The starting OID.

           \param id The OID to append.

           \exception inval_param If the string is malformed.

Member Function Documentation

bool oid::contains ( const oid id)

Checks whether the given oid is in the subtree of this oid.

This method checks whether the given OID is included in the subtree which has this oid as root.

Examples:

oid id("1.3.6.1.4.1.42.3");
id.contains( oid(1.3.6.1.4.1.42.3) ); // true
id.contains( oid(1.3.6.1.4.1.42) ); // false
id.contains( oid(1.3.6.1.4.1.43.3) ); // false
id.contains( oid(1.3.6.1.4.1.42.3.3.1) ); // true
Parameters:
idThe OID to check.
Returns:
True if id is contained in the subtree, false otherwise.
virtual oid agentxcpp::oid::get ( )
inlinevirtual

Obtain the current value for the object.

This member function is derived by classes representing SNMP variables and shall return the current value of the object.

The default implementation throws generic_error.

Returns:
The current value of the object.
Exceptions:
generic_errorIf obtaining the current value fails. No other exception shall be thrown.
bool agentxcpp::oid::operator!= ( const oid o) const
inline

The not-equal-operator for oids.

See operator<() for a more detailed description about comparing OIDs.

Parameters:
oThe OID tocompare to.
Returns:
False if the OIDs are equal, true otherwise.
bool oid::operator< ( const oid o) const

The less-than operator.

An OID is less than another OID if either the first not-identical part is lesser or if all parts are identical and it has lesser parts.

Example:
1.3.6.1.4.1.42.3.3.1
is less than
1.3.6.1.4.1.42.3.4.1
Note the next to last number.

Also,
1.3.6.1.4.1.42.3.3.1
is less than
1.3.6.1.4.1.42.3.3.1.1
because it is shorter.

However,
1.3.6.1.4.1.42.3.3.1
is greater than
1.3.6.1.4.1.42.3.2.1.1
because the 9th number is greater (although the first OID has less numbers than the second).

Parameters:
oThe OID tocompare to.
Returns:
True if the OID is less than 'o', false otherwise.
oid & oid::operator= ( const oid o)

Assignment operator.

Copies all data from 'o' into this OID.

Parameters:
oThe OID to copy from.
Returns:
A reference to this OID.
bool oid::operator== ( const oid o) const

The equal-operator.

See operator<() for a more detailed description about comparing OIDs.

Parameters:
oThe OID tocompare to.
Returns:
True if the OIDs are equal, false otherwise.
bool agentxcpp::oid::operator> ( const oid o) const
inline

The greater-than operator.

See operator<() for a more detailed description about comparing OIDs.

Parameters:
oThe OID tocompare to.
Returns:
True if the OID is greater than 'o', false otherwise.

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
const agentxcpp::oid o 
)
friend

The output operator for the oid class.

Object identifiers (oid objects) can be output as follows:

oid led_state(enterprises_oid, "1.3.3.1");
cout << "LED state OID: " << led_state << endl;

The last line will output "LED state OID: .1.3.6.1.4.1.3.3.1".

Parameters:
outThe stream to which to write the output.
oThe OID to output.
Returns:
The 'out' parameter.

Member Data Documentation

const oid ccitt_oid("0")

The 'ccitt' OID according to RFC 1155.

const oid directory_oid(internet_oid,"1")

The 'iso.org.dod.internet.directory' OID according to RFC 1155.

const oid dod_oid(org_oid,"6")

The 'iso.org.dod' OID according to RFC 1155.

const oid enterprises_oid(private_oid,"1")

The 'iso.org.dod.internet.private.enterprises' OID according to RFC 1155.

const oid experimental_oid(internet_oid,"3")

The 'iso.org.dod.internet.experimental' OID according to RFC 1155.

const oid internet_oid(dod_oid,"1")

The 'iso.org.dod.internet' OID according to RFC 1155.

const oid iso_oid("1")

The 'iso' OID according to RFC 1155.

const oid joint_iso_ccitt_oid("2")

The 'joint.iso.ccitt' OID according to RFC 1155.

const oid mgmt_oid(internet_oid,"2")

The 'iso.org.dod.internet.mgmt' OID according to RFC 1155.

const oid org_oid(iso_oid,"3")

The 'iso.org' OID according to RFC 1155.

const oid private_oid(internet_oid,"4")

The 'iso.org.dod.internet.private' OID according to RFC 1155.