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<V>
,ManagedObjectValueAccess<SubRequest<?>>
,ChangeableManagedObject<SubRequest<?>>
,GenericManagedObject
,MOScope
,RandomAccessManagedObject<SubRequest<?>>
,RegisteredManagedObject<V>
,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<?>>
TheMOScalar
class represents scalar SNMP managed objects. Subclasses might support Java serialization for this class. SNMP4J serialization is provided in any case by theSerializableManagedObject
interface.- Version:
- 3.1.0
- Author:
- Frank Fock
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addMOChangeListener(MOChangeListener l)
Adds aMOChangeListener
that needs to be informed about state changes of this scalar.void
addMOValueValidationListener(MOValueValidationListener l)
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)
Cleansup a (sub)request and frees all resources locked during the preparation phase.void
commit(SubRequest<?> request)
Commits 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(MOScope range)
Finds 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)
Processes a GET request and return the result in the supplied sub-request.MOAccess
getAccess()
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
getLowerBound()
Gets the lower bound OID of the scope.org.snmp4j.smi.OID
getOid()
Gets the instance OID of this scalar managed object.MOScope
getScope()
Returns the scope of OIDs that are covered by this scalar's object registration.MOScope
getSingleInstanceScope()
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
getSyntax()
Get the syntax of the scalars value by evaluating the internal cached value first.org.snmp4j.smi.OID
getUpperBound()
Gets the upper bound OID of the scope.V
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
instanceCount()
Returns the number of instances managed by thisManagedObject
.Iterator<org.snmp4j.smi.OID>
instanceIterator()
boolean
isCovered(MOScope other)
Checks whether the supplied scope is covered by this scope.boolean
isLowerIncluded()
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
isUpperIncluded()
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
isVolatile()
Tests if this instance of a SerializableManagedObject should be serialized or deserialized through persistent storage load or save operation.void
load(MOInput input)
Loads the content of the managed object from the specified input (stream).boolean
next(SubRequest<?> request)
Finds 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)
Prepares a SET (sub)request.void
removeMOChangeListener(MOChangeListener l)
Removes aMOChangeListener
.void
removeMOValueValidationListener(MOValueValidationListener l)
Removes a value validation listenervoid
save(MOOutput output)
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
setValue(V value)
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.String
toString()
protected String
toStringDetails()
void
undo(SubRequest<?> request)
Compensates (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 Detail
-
oid
protected org.snmp4j.smi.OID oid
-
access
protected MOAccess access
-
-
Constructor Detail
-
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
public MOScalar(org.snmp4j.smi.OID id, MOAccess access, V value)
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 Detail
-
getScope
public MOScope 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
public MOScope 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
public org.snmp4j.smi.OID find(MOScope range)
Description copied from interface:ManagedObject
Finds 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
public void get(SubRequest<?> request)
Description copied from interface:ManagedObject
Processes 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
public MOAccess getAccess()
Gets the access object for this scalar.- Returns:
- the access instance associated with this scalar.
- Since:
- 1.2
-
checkRequestScope
protected boolean checkRequestScope(SubRequest<?> request)
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
public boolean next(SubRequest<?> request)
Description copied from interface:ManagedObject
Finds 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
public int isValueOK(SubRequest<?> request)
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
public void prepare(SubRequest<?> request)
Description copied from interface:ManagedObject
Prepares 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
public void commit(SubRequest<?> request)
Description copied from interface:ManagedObject
Commits 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
protected int changeValue(V value)
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
public void undo(SubRequest<?> request)
Description copied from interface:ManagedObject
Compensates (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
public void cleanup(SubRequest<?> request)
Description copied from interface:ManagedObject
Cleansup a (sub)request and frees 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
public boolean isCovered(MOScope other)
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
public V 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.
-
setValue
public int setValue(V value)
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
public boolean isOverlapping(MOScope other)
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
public void addMOValueValidationListener(MOValueValidationListener l)
Adds a value validation listener to check new values.- Parameters:
l
- aMOValueValidationListener
instance.
-
removeMOValueValidationListener
public void removeMOValueValidationListener(MOValueValidationListener l)
Removes a value validation listener- Parameters:
l
- aMOValueValidationListener
instance.
-
fireValidate
protected void fireValidate(MOValueValidationEvent validationEvent)
-
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
public void load(MOInput input) throws IOException
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
public void save(MOOutput output) throws IOException
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.
-
toStringDetails
protected String toStringDetails()
-
addMOChangeListener
public void addMOChangeListener(MOChangeListener l)
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
public void removeMOChangeListener(MOChangeListener l)
Removes aMOChangeListener
.- Specified by:
removeMOChangeListener
in interfaceChangeableManagedObject<V extends org.snmp4j.smi.Variable>
- Parameters:
l
- aMOChangeListener
instance.- Since:
- 1.1
-
fireBeforePrepareMOChange
protected void fireBeforePrepareMOChange(MOChangeEvent changeEvent)
-
fireAfterPrepareMOChange
protected void fireAfterPrepareMOChange(MOChangeEvent changeEvent)
-
fireBeforeMOChange
protected void fireBeforeMOChange(MOChangeEvent changeEvent)
-
fireAfterMOChange
protected void fireAfterMOChange(MOChangeEvent changeEvent)
-
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
public List<org.snmp4j.smi.VariableBinding> exportInstance(org.snmp4j.smi.OID instanceID)
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
public Iterator<org.snmp4j.smi.OID> 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.
-
-