Module org.snmp4j.agent
Package org.snmp4j.agent.mo
Class MOScalar<V extends org.snmp4j.smi.Variable>
java.lang.Object
org.snmp4j.agent.mo.MOScalar<V>
- All Implemented Interfaces:
ManagedObject<SubRequest<?>>
,ManagedObjectValueAccess<SubRequest<?>>
,ChangeableManagedObject<SubRequest<?>>
,GenericManagedObject
,MOScope
,RandomAccessManagedObject<SubRequest<?>>
,RegisteredManagedObject<SubRequest<?>>
,SerializableManagedObject<SubRequest<?>>
- Direct Known Subclasses:
AgentppSimulationMib.AgentppSimDeleteRow
,AgentppSimulationMib.AgentppSimDeleteTableContents
,DateAndTimeScalar
,DisplayStringScalar
,EnumeratedScalar
,NotificationLogMib.NlmConfigGlobalAgeOut
,NotificationLogMib.NlmConfigGlobalEntryLimit
,SnmpTsmMib.SnmpTsmConfigurationUsePrefix
,SNMPv2MIB.SysUpTimeImpl
,TestAndIncr
,TimeStampScalar
,UsmDHParametersImpl
public class MOScalar<V extends org.snmp4j.smi.Variable>
extends Object
implements GenericManagedObject, MOScope, SerializableManagedObject<SubRequest<?>>, ManagedObjectValueAccess<SubRequest<?>>, ChangeableManagedObject<SubRequest<?>>, RandomAccessManagedObject<SubRequest<?>>
The
MOScalar
class represents scalar SNMP managed objects.
Subclasses might support Java serialization for this class. SNMP4J
serialization is provided in any case by the SerializableManagedObject
interface.- Version:
- 3.7.1
- Author:
- Frank Fock
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds aMOChangeListener
that needs to be informed about state changes of this scalar.void
Adds a value validation listener to check new values.protected int
changeValue
(V value) Changes the value of this scalar on behalf of a commit or undo operation.protected boolean
checkRequestScope
(SubRequest<?> request) Checks whether the request is within the scope of this scalar or not.void
cleanup
(SubRequest<?> request) Cleanup a (sub)request and free all resources locked during the preparation phase.void
commit
(SubRequest<?> request) Commit a previously prepared SET (sub)request.boolean
covers
(org.snmp4j.smi.OID oid) Checks if this scope covers the supplied OID.List
<org.snmp4j.smi.VariableBinding> exportInstance
(org.snmp4j.smi.OID instanceID) Exports the byte representation of an instance of theManagedObject
.org.snmp4j.smi.OID
Find the first object ID (OID) in the specified search range.protected void
fireAfterMOChange
(MOChangeEvent changeEvent) protected void
fireAfterPrepareMOChange
(MOChangeEvent changeEvent) protected void
fireBeforeMOChange
(MOChangeEvent changeEvent) protected void
fireBeforePrepareMOChange
(MOChangeEvent changeEvent) protected void
fireValidate
(MOValueValidationEvent validationEvent) void
get
(SubRequest<?> request) Process a GET request and return the result in the supplied sub-request.Gets the access object for this scalar.org.snmp4j.smi.OID
getID()
Gets the unique object ID of the managed object.org.snmp4j.smi.OID
Gets the lower bound OID of the scope.org.snmp4j.smi.OID
getOid()
Gets the instance OID of this scalar managed object.getScope()
Returns the scope of OIDs that are covered by this scalar's object registration.Returns a scope that covers only the scalar instance itself without any possible OIDs down in the tree or at the same level.protected int
Get the syntax of the scalars value by evaluating the internal cached value first.org.snmp4j.smi.OID
Gets the upper bound OID of the scope.getValue()
Returns the actual value of this scalar managed object.org.snmp4j.smi.Variable
getValue
(org.snmp4j.smi.OID instanceOID) Returns the variable (a copy thereof) with the specified instance OID managed by thisManagedObject
.boolean
importInstance
(org.snmp4j.smi.OID instanceID, List<org.snmp4j.smi.VariableBinding> data, ImportMode importMode) Imports the data that internally represents the instance specified by the OID suffixinstanceID
from the byte data provided which can be encoded in any representation theManagedObject
is able to understand.int
Returns the number of instances managed by thisManagedObject
.Iterator
<org.snmp4j.smi.OID> boolean
Returntrue
ifisVolatile()
isfalse
andfalse
ifisVolatile()
istrue
and the syntax type isCounter32
,Counter64
, andTimeTicks
.boolean
Checks whether the supplied scope is covered by this scope.boolean
Indicates whether the lower bound OID is included in the scope or not.boolean
isOverlapping
(MOScope other) Checks whether the supplied scope overlap with this one, thus sharing at least one OID with the supplied one.boolean
Indicates whether the upper bound OID is included in the scope or not.int
isValueOK
(SubRequest<?> request) Checks whether the new value contained in the supplied sub-request is a valid value for this object.boolean
Tests if this instance of a SerializableManagedObject should be serialized or deserialized through persistent storage load or save operation.void
Loads the content of the managed object from the specified input (stream).boolean
next
(SubRequest<?> request) Find the successor instance for the object instance ID (OID) given by the supplied sub-request and returns it within the supplied sub-request object.void
prepare
(SubRequest<?> request) Prepare a SET (sub)request.void
Removes aMOChangeListener
.void
Removes a value validation listenervoid
Saves the (non-volatile) content of this managed object to the specified output (stream).boolean
setValue
(org.snmp4j.smi.VariableBinding newValueAndInstancceOID) Sets the value of a particular MIB object instance managed by thisManagedObject
.int
Sets the value of this scalar managed object without checking it for the correct syntax.void
setVolatile
(boolean isVolatile) Sets the volatile flag for this instance.toString()
protected String
void
undo
(SubRequest<?> request) Compensate (undo) a (sub)request when a commit of another subrequest failed with an error.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.snmp4j.agent.RandomAccessManagedObject
getInstanceSubID, isVolatile
-
Field Details
-
oid
protected org.snmp4j.smi.OID oid -
value
-
access
-
-
Constructor Details
-
MOScalar
protected MOScalar()Construct a MOScalar for deserialization. If used by a subclass, make sure theoid
andaccess
members are set before the scalar is registered with aMOServer
instance. Theoid
must not be changed or modified afterwards!- Since:
- 2.4.1
-
MOScalar
Creates a scalar MO instance with OID, maximum access level and initial value.- Parameters:
id
- the instance OID of the scalar instance (last sub-identifier should be zero).access
- the maximum access level supported by this instance.value
- the initial value of the scalar instance. If the initial value isnull
or a Counter syntax, the scalar is created as a volatile (non-persistent) instance by default.
-
-
Method Details
-
getScope
Returns the scope of OIDs that are covered by this scalar's object registration. This range is1.3.6...n
<= x <1.3.6...n+1
where n is the last subidentifier of the OID registered by the corresponding OBJECT-TYPE definition. Prior to version 1.1.2, this method returned a scope equal to the scope now returned bygetSingleInstanceScope()
.- Specified by:
getScope
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Returns:
- a MOScope that covers the OIDs by this scalar object registration.
-
getSingleInstanceScope
Returns a scope that covers only the scalar instance itself without any possible OIDs down in the tree or at the same level.- Returns:
- a scope that covers exactly the OID of this scalar.
- Since:
- 1.1.2
-
find
Description copied from interface:ManagedObject
Find the first object ID (OID) in the specified search range.- Specified by:
find
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
range
- theMOScope
for the search.- Returns:
- the
OID
that is included in the searchrange
andnull
if no such instances could be found.
-
get
Description copied from interface:ManagedObject
Process a GET request and return the result in the supplied sub-request.- Specified by:
get
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.
-
getAccess
Gets the access object for this scalar.- Returns:
- the access instance associated with this scalar.
- Since:
- 1.2
-
checkRequestScope
Checks whether the request is within the scope of this scalar or not.- Parameters:
request
- a SubRequest.- Returns:
true
if the request is within scope andfalse
otherwise. In the latter case, the variable of the request is set toNull.noSuchInstance
and the request is marked completed.
-
next
Description copied from interface:ManagedObject
Find the successor instance for the object instance ID (OID) given by the supplied sub-request and returns it within the supplied sub-request object.- Specified by:
next
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.- Returns:
true
if the search request found an appropriate instance,false
otherwise.
-
isValueOK
Checks whether the new value contained in the supplied sub-request is a valid value for this object. The checks are performed by firing aMOValueValidationEvent
the registered listeners.- Parameters:
request
- theSubRequest
with the new value.- Returns:
SnmpConstants.SNMP_ERROR_SUCCESS
if the new value is OK, any other appropriate SNMPv2/v3 error status if not.
-
getSyntax
protected int getSyntax()Get the syntax of the scalars value by evaluating the internal cached value first. If that isnull
, thegetValue()
method is called instead to allow subclasses to return an updated value.- Returns:
value.getSyntax()
if value is not null andgetValue().,getSyntax()
if value is null.
-
prepare
Description copied from interface:ManagedObject
Prepare a SET (sub)request. This method represents the first phase of a two phase commit. During preparation all necessary resources should be locked in order to be able to execute the commit without claiming additional resources.- Specified by:
prepare
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.
-
commit
Description copied from interface:ManagedObject
Commit a previously prepared SET (sub)request. This is the second phase of a two phase commit. The change is committed but the resources locked during prepare not freed yet.- Specified by:
commit
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.
-
changeValue
Changes the value of this scalar on behalf of a commit or undo operation. Overwrite this method for easy and simple instrumentation. By defaultsetValue(Variable value)
is called.- Parameters:
value
- the new value.- Returns:
- a SNMP error status if the operation failed (should be avoided).
- Since:
- 1.2
-
undo
Description copied from interface:ManagedObject
Compensate (undo) a (sub)request when a commit of another subrequest failed with an error. This also frees any resources locked during the preparation phase.- Specified by:
undo
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.
-
cleanup
Description copied from interface:ManagedObject
Cleanup a (sub)request and free all resources locked during the preparation phase.- Specified by:
cleanup
in interfaceManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
request
- theSubRequest
to process.
-
getOid
public org.snmp4j.smi.OID getOid()Gets the instance OID of this scalar managed object.- Returns:
- the instance OID (by reference).
-
getLowerBound
public org.snmp4j.smi.OID getLowerBound()Description copied from interface:MOScope
Gets the lower bound OID of the scope. Whether the lower bound is included or excluded from the scope's region is determined byMOScope.isLowerIncluded()
.- Specified by:
getLowerBound
in interfaceMOScope
- Returns:
- an OID.
-
getUpperBound
public org.snmp4j.smi.OID getUpperBound()Description copied from interface:MOScope
Gets the upper bound OID of the scope. Whether the upper bound is included or excluded from the scope's region is determined byMOScope.isUpperIncluded()
.- Specified by:
getUpperBound
in interfaceMOScope
- Returns:
- OID
-
isCovered
Description copied from interface:MOScope
Checks whether the supplied scope is covered by this scope. -
isLowerIncluded
public boolean isLowerIncluded()Description copied from interface:MOScope
Indicates whether the lower bound OID is included in the scope or not.- Specified by:
isLowerIncluded
in interfaceMOScope
- Returns:
true
if the lower bound is included.
-
isUpperIncluded
public boolean isUpperIncluded()Description copied from interface:MOScope
Indicates whether the upper bound OID is included in the scope or not.- Specified by:
isUpperIncluded
in interfaceMOScope
- Returns:
true
if the upper bound is included.
-
getValue
Returns the actual value of this scalar managed object. For a basic instrumentation, overwrite this method to provide always the actual value and/or to update the internalvalue
member and then callsuper.
getValue()
in the derived class.- Returns:
- a non
null
Variable with the same syntax defined for this scalar object.
-
isVolatile
public boolean isVolatile()Description copied from interface:SerializableManagedObject
Tests if this instance of a SerializableManagedObject should be serialized or deserialized through persistent storage load or save operation.- Specified by:
isVolatile
in interfaceRandomAccessManagedObject<V extends org.snmp4j.smi.Variable>
- Specified by:
isVolatile
in interfaceSerializableManagedObject<V extends org.snmp4j.smi.Variable>
- Returns:
true
ifSerializableManagedObject.load(org.snmp4j.agent.io.MOInput)
andSerializableManagedObject.save(org.snmp4j.agent.io.MOOutput)
should not be called through a persistent storage operation andfalse
if these method should be called.
-
isConfigurable
public boolean isConfigurable()Returntrue
ifisVolatile()
isfalse
andfalse
ifisVolatile()
istrue
and the syntax type isCounter32
,Counter64
, andTimeTicks
.- Specified by:
isConfigurable
in interfaceSerializableManagedObject<V extends org.snmp4j.smi.Variable>
- Returns:
true
-
setValue
Sets the value of this scalar managed object without checking it for the correct syntax.- Parameters:
value
- a Variable with the same syntax defined for this scalar object (not checked).- Returns:
- a SNMP error code (zero indicating success by default).
-
setVolatile
public void setVolatile(boolean isVolatile) Sets the volatile flag for this instance.- Parameters:
isVolatile
- iftrue
the state of this object will not be persistently stored, otherwise the agent may save the state of this object persistently.
-
isOverlapping
Description copied from interface:MOScope
Checks whether the supplied scope overlap with this one, thus sharing at least one OID with the supplied one.- Specified by:
isOverlapping
in interfaceMOScope
- Parameters:
other
- aMOScope
.- Returns:
true
if there exists at least one OID that is included in both scopes.
-
addMOValueValidationListener
Adds a value validation listener to check new values.- Parameters:
l
- aMOValueValidationListener
instance.
-
removeMOValueValidationListener
Removes a value validation listener- Parameters:
l
- aMOValueValidationListener
instance.
-
fireValidate
-
getID
public org.snmp4j.smi.OID getID()Description copied from interface:RegisteredManagedObject
Gets the unique object ID of the managed object.- Specified by:
getID
in interfaceRegisteredManagedObject<V extends org.snmp4j.smi.Variable>
- Returns:
- an OID.
-
load
Description copied from interface:SerializableManagedObject
Loads the content of the managed object from the specified input (stream).- Specified by:
load
in interfaceSerializableManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
input
- aMOInput
instance.- Throws:
IOException
- if an MOInput operation fails.
-
save
Description copied from interface:SerializableManagedObject
Saves the (non-volatile) content of this managed object to the specified output (stream).- Specified by:
save
in interfaceSerializableManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
output
- aMOOutput
instance.- Throws:
IOException
- if an MOOutput operation fails.
-
covers
public boolean covers(org.snmp4j.smi.OID oid) Description copied from interface:MOScope
Checks if this scope covers the supplied OID. -
toString
-
toStringDetails
-
addMOChangeListener
Adds aMOChangeListener
that needs to be informed about state changes of this scalar.- Specified by:
addMOChangeListener
in interfaceChangeableManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
l
- aMOChangeListener
instance.- Since:
- 1.1
-
removeMOChangeListener
Removes aMOChangeListener
.- Specified by:
removeMOChangeListener
in interfaceChangeableManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
l
- aMOChangeListener
instance.- Since:
- 1.1
-
fireBeforePrepareMOChange
-
fireAfterPrepareMOChange
-
fireBeforeMOChange
-
fireAfterMOChange
-
getValue
public org.snmp4j.smi.Variable getValue(org.snmp4j.smi.OID instanceOID) Description copied from interface:ManagedObjectValueAccess
Returns the variable (a copy thereof) with the specified instance OID managed by thisManagedObject
.- Specified by:
getValue
in interfaceManagedObjectValueAccess<V extends org.snmp4j.smi.Variable>
- Parameters:
instanceOID
- the instance OID of the value. Thus, for scalar values with .0 suffix and for tabular objects with table index suffix.- Returns:
- a copy of the requested
Variable
ornull
if such a variable does not exist.
-
setValue
public boolean setValue(org.snmp4j.smi.VariableBinding newValueAndInstancceOID) Description copied from interface:ManagedObjectValueAccess
Sets the value of a particular MIB object instance managed by thisManagedObject
. This is a low level operation, thus no change events will be fired.- Specified by:
setValue
in interfaceManagedObjectValueAccess<V extends org.snmp4j.smi.Variable>
- Parameters:
newValueAndInstancceOID
- aVariableBinding
identifying the object instance to modify by its OID and the new value by its variable part.- Returns:
true
if the object instance exists and has been modified successfully,false
otherwise.
-
importInstance
public boolean importInstance(org.snmp4j.smi.OID instanceID, List<org.snmp4j.smi.VariableBinding> data, ImportMode importMode) Description copied from interface:RandomAccessManagedObject
Imports the data that internally represents the instance specified by the OID suffixinstanceID
from the byte data provided which can be encoded in any representation theManagedObject
is able to understand.- Specified by:
importInstance
in interfaceRandomAccessManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
instanceID
- the OID suffix identifying the instance to export, for scalars this is "0" and for tabular objects this is the row index.data
- the SNMP data of the instance where the OID identifies the sub-instance (i.e. the column sub-ID for row instances and "0" for scalar objects).importMode
- defines the import strategy - must not benull
!- Returns:
true
if the import was successful,false
otherwise.
-
exportInstance
Description copied from interface:RandomAccessManagedObject
Exports the byte representation of an instance of theManagedObject
.- Specified by:
exportInstance
in interfaceRandomAccessManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
instanceID
- the OID suffix identifying the instance to export, for scalars this is "0" and for tabular objects this is the row index.- Returns:
- the SNMP data of the instance where the OID identifies the sub-instance (i.e. the column sub-ID for row instances and "0" for scalar objects).
-
instanceIterator
- Specified by:
instanceIterator
in interfaceRandomAccessManagedObject<V extends org.snmp4j.smi.Variable>
-
instanceCount
public int instanceCount()Returns the number of instances managed by thisManagedObject
.- Specified by:
instanceCount
in interfaceRandomAccessManagedObject<V extends org.snmp4j.smi.Variable>
- Returns:
- the number of instances managed by this object.
-