Architecture - Object Identifier

The class discussed here is org.friendlysnmp.FID or for short FID.

FriendlySNMP API deals with objects declared in a MIB. These objects are often named nodes because they could be viewed as nodes and leaves in the MIB tree. Each node in this tree has a unique identifier. This identifier is a sequence of integers on the path leading from the root of the tree to a named object.

Three fundamental node objects exposed by FriendlySNMP are Scalar, Table and Notification. Each of them is referred by node object identifier org.friendlysnmp.FID.

This FID class is an immutable wrapper which hides internally used object of the org.snmp4j.smi.OID class or for short OID from SNMP4J package.

The SNMP4J OID class is a powerful and convenient to use class but it has a catch for a developer. This class is mutable. It is very easy for developer to accidentally modify OID value in an object of this class. The class org.friendlysnmp.FID is safe. It gives a developer access to a copy of an internal OID value thus preserving original OID value intact.

The class org.friendlysnmp.FID has another friendly feature which extends OID functionality: a node name. Consider example when you display a message or log event in the form:

The scalar 1.3.6.1.4.1.29091.10.2.1.3 has a new value.

This extremely not user friendly message is not easy to comprehend. The same message could use a scalar name in user friendly form:

The scalar imageSize has a new value.

It is a developer's choice what FID value to use in the message, OID or name or both.