Package org.snmp4j.agent.db
Class MOXodusPersistence
java.lang.Object
org.snmp4j.agent.db.MOXodusPersistence
- All Implemented Interfaces:
EventListener
,org.snmp4j.agent.mo.MOChangeListener
The
MOXodusPersistence
class provides persistent storage for SNMP4J-Agent using the
MOXodusPersistenceProvider
wrapper that actually implements the
MOPersistenceProvider
interface of SNMP4J-Agent.
As storage engine, the Xodus open source (Apache 2 License) DB is used.
See https://github.com/JetBrains/xodus} for details.
The database approach has the following advantages compared to the standard sequential persistence provider coming
with SNMP4J-Agent:
- Only changed objects are written again to disk. The default DefaultMOPersistenceProvider needs to save all objects in a sequence.
- DB size is smaller - if changes are limited to approximately less than 40% of the MIB objects during runtime.
- Agent shutdown is much faster because no objects need to be saved anymore.
- No data loss if agent is killed.
SampleAgent
illustrates how this class is created
and assigned to the agent during its initialization.
File configFile = new File(myConfigDir); MOXodusPersistence moXodusPersistence = new MOXodusPersistence(moServers, Environments.newInstance(configFile)); MOXodusPersistenceProvider moXodusPersistenceProvider = new MOXodusPersistenceProvider(moXodusPersistence); OctetString defaultEngineID = new OctetString(MPv3.createLocalEngineID()); OctetString engineID = moXodusPersistenceProvider.getEngineId(defaultEngineID); ... agent = new AgentConfigManager(engineID, messageDispatcher, null, moServers, ThreadPool.create("SampleAgent", 3), (defaultEngineID == engineID) ? configurationFactory : null, moXodusPersistenceProvider, new EngineBootsCounterFile(bootCounterFile), null, dhKickstartParameters); agent.addAgentStateListener(new AgentStateListener() { public void agentStateChanged(AgentConfigManager agentConfigManager, AgentState newState) { switch (newState.getState()) { case AgentState.STATE_INITIALIZED: moXodusPersistence.registerChangeListenersWithServer(server); break; case AgentState.STATE_SHUTDOWN: moXodusPersistence.unregisterChangeListenersWithServer(server); break; } } });
- Since:
- 3.0
- Version:
- 3.5.0
- Author:
- Frank Fock
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
TheMOXodusPersistence.SavingStrategy
defines how and when persistent data is saved. -
Constructor Summary
ConstructorDescriptionMOXodusPersistence
(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment) MOXodusPersistence
(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment, MOXodusPersistence.SavingStrategy savingStrategy) MOXodusPersistence
(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment, MOXodusPersistence.SavingStrategy savingStrategy, org.snmp4j.agent.MOScopeComparator moScopeComparator) -
Method Summary
Modifier and TypeMethodDescriptionvoid
afterMOChange
(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A change has been committed.void
afterPrepareMOChange
(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A change has been prepared.void
beforeMOChange
(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A ManagedObject change is being committed.void
beforePrepareMOChange
(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A ManagedObject change is being prepared.protected jetbrains.exodus.env.Store
createStore
(jetbrains.exodus.env.Transaction txn, org.snmp4j.smi.OctetString context) Ceates aStore
for a context.static int[]
decodeIndexOID
(org.snmp4j.asn1.BERInputStream is, org.snmp4j.asn1.BER.MutableByte type) Decode a indexOID
from a BER input stream.protected List
<org.snmp4j.smi.VariableBinding> decodeInstanceData
(jetbrains.exodus.ByteIterable rawData) Decode BER instance data from raw byte stream.protected org.snmp4j.smi.VariableBinding
decodeVariableBinding
(org.snmp4j.asn1.BERInputStream inputStream) Decode aVariableBinding
from anBERInputStream
.static void
encodeIndexOID
(OutputStream os, byte type, int[] oid) Encodes an index OID.protected byte[]
encodeInstanceData
(List<org.snmp4j.smi.VariableBinding> vbs) Encode instance data from a list ofVariableBinding
s.protected void
encodeVariableBinding
(org.snmp4j.smi.VariableBinding vb, org.snmp4j.asn1.BEROutputStream outputStream) Encode aVariableBinding
to aBEROutputStream
.protected Set
<org.snmp4j.smi.OctetString> getContexts
(org.snmp4j.agent.ManagedObject<?> managedObject) Get the contexts registered with allMOServer
for the givenManagedObject
.jetbrains.exodus.env.Environment
Gets the XodusEnvironment
used by this persistent probvider.static int
getIndexOIDLength
(int[] value) Get the index OID length from a index OID raw value.protected jetbrains.exodus.ByteIterable
getKey
(org.snmp4j.smi.OID oid, org.snmp4j.smi.OID instanceID) Gets the key for an OID and instance ID.protected org.snmp4j.smi.OID
getKeyOid
(jetbrains.exodus.ByteIterable key) Gets the OID of a key.org.snmp4j.agent.MOScopeComparator
Gets theMOScopeComparator
that defines the default order in whichManagedObject
s are stored and restored from persistent storage (unless the parameterMOPriorityProvider
is used).org.snmp4j.agent.MOServer[]
Get the associatedMOServer
s.Gets the current exception list for keepingRandomAccessManagedObject
s persistent regardless theirRandomAccessManagedObject.isVolatile()
value or not.Gets the saving strategy as defined byMOXodusPersistence.SavingStrategy
.boolean
isContextLoadable
(org.snmp4j.smi.OctetString context) Checks if there is already MIB data stored for the specified context.boolean
Returntrue
if theregisterChangeListenersWithServer(MOServer)
for any server, butunregisterChangeListenersWithServer(MOServer)
has not been called yet.boolean
Check whether change listener events are actually suppressed (i.e.void
load
(org.snmp4j.agent.io.ImportMode importMode) void
load
(org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider) Load the contents of allRandomAccessManagedObject
s usingRandomAccessManagedObject.importInstance(OID, List, ImportMode)
calls.void
load
(org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, boolean includeVolatile) Load the contents of allRandomAccessManagedObject
s usingRandomAccessManagedObject.importInstance(OID, List, ImportMode)
calls.void
registerChangeListenersWithServer
(org.snmp4j.agent.MOServer moServer) Register this object asMOChangeListener
on allRandomAccessManagedObject
instances in the providedMOServer
.protected void
runSynchronization
(Map<org.snmp4j.smi.OctetString, jetbrains.exodus.env.Store> stores, jetbrains.exodus.env.Transaction txn, org.snmp4j.agent.io.ImportMode importMode, Iterator<Map.Entry<org.snmp4j.agent.MOScope, org.snmp4j.agent.ManagedObject<?>>> moIterator, boolean includeVolatile) Run synchronisation between in memory data and on disk data.protected org.snmp4j.agent.ManagedObject
<?> runSyncOnBootMO
(jetbrains.exodus.env.Transaction txn, org.snmp4j.agent.MOServer moServer, Map<org.snmp4j.smi.OctetString, jetbrains.exodus.env.Store> stores, org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, org.snmp4j.smi.OctetString context) Run synchronisation on the bootManagedObject
(i.e.void
save()
Saves the data of theMOServer
s associated with this instance to persistent storage depending on the currently configuredMOXodusPersistence.SavingStrategy
.void
save
(org.snmp4j.agent.mo.MOPriorityProvider priorityProvider) Saves the data of theMOServer
s associated with this instance to persistent storage depending on the currently configuredMOXodusPersistence.SavingStrategy
.void
saveFullDump
(org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, boolean includeVolatile) Saves the data of theMOServer
s associated with this instance to persistent storage independent of the currently setMOXodusPersistence.SavingStrategy
.void
setIgnoreChangeListenerEvents
(boolean ignoreChangeListenerEvents) Defines whetherMOChangeEvent
s should be ignored or not.void
setMoScopeComparator
(org.snmp4j.agent.MOScopeComparator moScopeComparator) Sets theMOScopeComparator
and by this defines the default order in whichManagedObject
s are stored and restored from persistent storage as long as parameterMOPriorityProvider
ofsave(MOPriorityProvider)
andload(ImportMode, MOPriorityProvider)
are not used.void
setPersistenceExceptionList
(Map<org.snmp4j.smi.OID, Boolean> persistenceExceptionList) Sets the current exception list for keepingRandomAccessManagedObject
s persistent regardless theirRandomAccessManagedObject.isVolatile()
value or not.void
setSavingStrategy
(MOXodusPersistence.SavingStrategy savingStrategy) Sets the saving strategy for this persistence provider as defined byMOXodusPersistence.SavingStrategy
.protected String
storeNameFromContext
(org.snmp4j.smi.OctetString context) Return a string store name for the provided SNMPv3 context.void
unregisterChangeListenersWithServer
(org.snmp4j.agent.MOServer moServer) Removes a former registration of this object asMOChangeListener
on allRandomAccessManagedObject
instances in the providedMOServer
.
-
Constructor Details
-
MOXodusPersistence
public MOXodusPersistence(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment) Creates a newMOXodusPersistence
from an array ofMOServer
instances and an XodusEnvironment
. The data of modified objects are stored whenever a correspondingMOChangeEvent
is received.- Parameters:
moServers
- theManagedObject
servers of the agent to be supported with persistent storage capabilities by this object.environment
- the Xodus environment that actually holds the persistent data.
-
MOXodusPersistence
public MOXodusPersistence(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment, MOXodusPersistence.SavingStrategy savingStrategy) - Parameters:
moServers
- theManagedObject
servers of the agent to be supported with persistent storage capabilities by this object.environment
- the Xodus environment that actually holds the persistent data.savingStrategy
- defines when and how modified objects of the agent should be saved into persistent storage.
-
MOXodusPersistence
public MOXodusPersistence(org.snmp4j.agent.MOServer[] moServers, jetbrains.exodus.env.Environment environment, MOXodusPersistence.SavingStrategy savingStrategy, org.snmp4j.agent.MOScopeComparator moScopeComparator) - Parameters:
moServers
- theManagedObject
servers of the agent to be supported with persistent storage capabilities by this object.environment
- the Xodus environment that actually holds the persistent data.savingStrategy
- defines when and how modified objects of the agent should be saved into persistent storage.moScopeComparator
- defines the order in whichManagedObject
s are stored and restored from persistent storage. Ifnull
, theMOScopeComparator
is used that sorts the registered managed objects by their lower bound OID in ascending order.- Since:
- 3.5.0
-
-
Method Details
-
getSavingStrategy
Gets the saving strategy as defined byMOXodusPersistence.SavingStrategy
.- Returns:
- the current managed object saving strategy.
-
setSavingStrategy
Sets the saving strategy for this persistence provider as defined byMOXodusPersistence.SavingStrategy
.- Parameters:
savingStrategy
- the new managed object saving strategy.
-
isIgnoreChangeListenerEvents
public boolean isIgnoreChangeListenerEvents()Check whether change listener events are actually suppressed (i.e. ignored) or not.- Returns:
true
if change listener events will be ignored.
-
setIgnoreChangeListenerEvents
public void setIgnoreChangeListenerEvents(boolean ignoreChangeListenerEvents) Defines whetherMOChangeEvent
s should be ignored or not. This method can be used to disable persistent storage activities when the default strategyMOXodusPersistence.SavingStrategy.onChangeEventsOnly
is active and other bulk operations change MIB data in the agent. When activating the processing ofMOChangeEvent
s is activated again by setting this value tofalse
, the missed events will not be processed again. Thus, if data has changed that need to be persistent, thesave()
has to be called with strategyMOXodusPersistence.SavingStrategy.checkForModificationsOnSave
orMOXodusPersistence.SavingStrategy.fullDumpOnSave
manually.- Parameters:
ignoreChangeListenerEvents
-true
to disable event processing and saving changes triggered byMOChangeEvent
s.
-
getEnvironment
public jetbrains.exodus.env.Environment getEnvironment()Gets the XodusEnvironment
used by this persistent probvider.- Returns:
- a
Environment
.
-
isContinuousChangeListening
public boolean isContinuousChangeListening()Returntrue
if theregisterChangeListenersWithServer(MOServer)
for any server, butunregisterChangeListenersWithServer(MOServer)
has not been called yet.- Returns:
true
if theregisterChangeListenersWithServer(MOServer)
for any server.
-
registerChangeListenersWithServer
public void registerChangeListenersWithServer(org.snmp4j.agent.MOServer moServer) Register this object asMOChangeListener
on allRandomAccessManagedObject
instances in the providedMOServer
.- Parameters:
moServer
- aMOServer
holdingRandomAccessManagedObject
s that should be persisted.
-
unregisterChangeListenersWithServer
public void unregisterChangeListenersWithServer(org.snmp4j.agent.MOServer moServer) Removes a former registration of this object asMOChangeListener
on allRandomAccessManagedObject
instances in the providedMOServer
.- Parameters:
moServer
- aMOServer
holdingRandomAccessManagedObject
s that should not be persisted anymore.
-
isContextLoadable
public boolean isContextLoadable(org.snmp4j.smi.OctetString context) Checks if there is already MIB data stored for the specified context. To check the default context (null
), please use the emptyOctetString
. This method should be called before callingload(ImportMode)
because afterwards it will returntrue
for all contexts that were present ingetMOServer()
and for the default context (empty context).- Parameters:
context
- a non-null context string. The empty (zero length)OctetString
represents the default context.- Returns:
true
if there has been data stored for this context - even if noRandomAccessManagedObject
actually has stored any data.- Since:
- 3.0.1
-
load
public void load(org.snmp4j.agent.io.ImportMode importMode) -
load
public void load(org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider) Load the contents of allRandomAccessManagedObject
s usingRandomAccessManagedObject.importInstance(OID, List, ImportMode)
calls. The providedImportMode
thereby defines how the data handles existing data. Data is loaded for all contexts and managed objects found in the {link MOServer} instances provided during object creation. While loading, the memberignoreChangeListenerEvents
is set totrue
to ignore updates caused by loading data into theRandomAccessManagedObject
instances. UsesetMoScopeComparator(MOScopeComparator)
to modify the order in whichManagedObject
s are loaded. Since version 3.5.0, objects are loaded in the order defined by theMOPriorityProvider
given in order to facilitate loading and especially initialization ofManagedObject
s that augment or extend base tables or depend on each other. For each context, a load order defined by the content of single bootManagedObject
can be defined. In most cases, a single order defined in the default (null
) context is sufficient.- Parameters:
importMode
- controls how existing data is used or not used during import.priorityProvider
- if notnull
, it provides the order for loading and initializing managed objects byMOPriorityProvider.getPriorityMap(OctetString)
.
-
load
public void load(org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, boolean includeVolatile) Load the contents of allRandomAccessManagedObject
s usingRandomAccessManagedObject.importInstance(OID, List, ImportMode)
calls. The providedImportMode
thereby defines how the data handles existing data. Data is loaded for all contexts and managed objects found in the {link MOServer} instances provided during object creation. While loading, the memberignoreChangeListenerEvents
is set totrue
to ignore updates caused by loading data into theRandomAccessManagedObject
instances. UsesetMoScopeComparator(MOScopeComparator)
to modify the order in whichManagedObject
s are loaded. Since version 3.5.0, objects are loaded in the order defined by theMOPriorityProvider
given in order to facilitate loading and especially initialization ofManagedObject
s that augment or extend base tables or depend on each other. For each context, a load order defined by the content of single bootManagedObject
can be defined. In most cases, a single order defined in the default (null
) context is sufficient.- Parameters:
importMode
- controls how existing data is used or not used during import.priorityProvider
- if notnull
, it provides the order for loading and initializing managed objects byMOPriorityProvider.getPriorityMap(OctetString)
.includeVolatile
- iftrue
,RandomAccessManagedObject
s withRandomAccessManagedObject.isVolatile()
true
will be saved too, otherwise those objects will not be saved.- Since:
- 3.6.0
-
runSyncOnBootMO
protected org.snmp4j.agent.ManagedObject<?> runSyncOnBootMO(jetbrains.exodus.env.Transaction txn, org.snmp4j.agent.MOServer moServer, Map<org.snmp4j.smi.OctetString, jetbrains.exodus.env.Store> stores, org.snmp4j.agent.io.ImportMode importMode, org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, org.snmp4j.smi.OctetString context) Run synchronisation on the bootManagedObject
(i.e. theManagedObject
restored before any other.- Parameters:
txn
- theTransaction
.moServer
- theMOServer
.stores
- the stores containing the persistent data.importMode
- theImportMode
to be used.priorityProvider
- theMOPriorityProvider
that defines the restore priorities.context
- the context to restore- Returns:
- the boot
ManagedObject
.
-
createStore
@NotNull protected jetbrains.exodus.env.Store createStore(jetbrains.exodus.env.Transaction txn, org.snmp4j.smi.OctetString context) Ceates aStore
for a context.- Parameters:
txn
- theTransaction
.context
- the context.- Returns:
- a new opened
Store
;
-
storeNameFromContext
Return a string store name for the provided SNMPv3 context.- Parameters:
context
- a context name ornull
for the default context.- Returns:
- a store name, by default
context == null ? "" : context.toHexString()
. - Since:
- 3.0.1
-
getMOServer
public org.snmp4j.agent.MOServer[] getMOServer()Get the associatedMOServer
s.- Returns:
- an array of
MOServer
instances.
-
getMoScopeComparator
public org.snmp4j.agent.MOScopeComparator getMoScopeComparator()Gets theMOScopeComparator
that defines the default order in whichManagedObject
s are stored and restored from persistent storage (unless the parameterMOPriorityProvider
is used).- Returns:
- a
MOScopeComparator
instance.
-
setMoScopeComparator
public void setMoScopeComparator(org.snmp4j.agent.MOScopeComparator moScopeComparator) Sets theMOScopeComparator
and by this defines the default order in whichManagedObject
s are stored and restored from persistent storage as long as parameterMOPriorityProvider
ofsave(MOPriorityProvider)
andload(ImportMode, MOPriorityProvider)
are not used. If set tonull
, theMOScopeComparator
is used that sorts the registered managed objects by their lower bound OID in ascending order.- Parameters:
moScopeComparator
- defines the order in whichManagedObject
s are stored and restored from persistent storage. Ifnull
, theMOScopeComparator
is used that sorts the registered managed objects by their lower bound OID in ascending order.
-
runSynchronization
protected void runSynchronization(Map<org.snmp4j.smi.OctetString, jetbrains.exodus.env.Store> stores, jetbrains.exodus.env.Transaction txn, org.snmp4j.agent.io.ImportMode importMode, Iterator<Map.Entry<org.snmp4j.agent.MOScope, org.snmp4j.agent.ManagedObject<?>>> moIterator, boolean includeVolatile) Run synchronisation between in memory data and on disk data.- Parameters:
stores
- the context stores.txn
- theTransaction
.importMode
- the import mode to use.moIterator
- the object iterator over theManagedObject
s to be synchronized.includeVolatile
- iftrue
,RandomAccessManagedObject
s withRandomAccessManagedObject.isVolatile()
true
will be saved too, otherwise those objects will not be saved.
-
decodeInstanceData
protected List<org.snmp4j.smi.VariableBinding> decodeInstanceData(jetbrains.exodus.ByteIterable rawData) Decode BER instance data from raw byte stream.- Parameters:
rawData
- the BER encoded data.- Returns:
- the decoded list of
VariableBinding
s.
-
encodeInstanceData
Encode instance data from a list ofVariableBinding
s.- Parameters:
vbs
- a list ofVariableBinding
s.- Returns:
- a BER encoded byte array.
-
decodeVariableBinding
protected org.snmp4j.smi.VariableBinding decodeVariableBinding(org.snmp4j.asn1.BERInputStream inputStream) throws IOException Decode aVariableBinding
from anBERInputStream
.- Parameters:
inputStream
- theBERInputStream
- Returns:
- the decoded
VariableBinding
. - Throws:
IOException
- if BER encoding is wrong.
-
encodeVariableBinding
protected void encodeVariableBinding(org.snmp4j.smi.VariableBinding vb, org.snmp4j.asn1.BEROutputStream outputStream) throws IOException Encode aVariableBinding
to aBEROutputStream
.- Parameters:
vb
- aVariableBinding
.outputStream
- aBEROutputStream
.- Throws:
IOException
- on a buffer overflow.
-
getKey
protected jetbrains.exodus.ByteIterable getKey(org.snmp4j.smi.OID oid, org.snmp4j.smi.OID instanceID) Gets the key for an OID and instance ID.- Parameters:
oid
- a OID.instanceID
- an instance ID.- Returns:
- a byte stream encoded unique key.
-
getKeyOid
protected org.snmp4j.smi.OID getKeyOid(jetbrains.exodus.ByteIterable key) Gets the OID of a key.- Parameters:
key
- a byte stream containing a key.- Returns:
- the OID portion of the key.
-
save
public void save()Saves the data of theMOServer
s associated with this instance to persistent storage depending on the currently configuredMOXodusPersistence.SavingStrategy
. If that strategy isMOXodusPersistence.SavingStrategy.onChangeEventsOnly
, calling this method will have no effect, except that it setssetIgnoreChangeListenerEvents(boolean)
tofalse
in any case. UsesetMoScopeComparator(MOScopeComparator)
to modify the order in whichManagedObject
s are stored. -
save
public void save(org.snmp4j.agent.mo.MOPriorityProvider priorityProvider) Saves the data of theMOServer
s associated with this instance to persistent storage depending on the currently configuredMOXodusPersistence.SavingStrategy
. If that strategy isMOXodusPersistence.SavingStrategy.onChangeEventsOnly
, calling this method will have no effect, except that it setssetIgnoreChangeListenerEvents(boolean)
tofalse
in any case. UsesetMoScopeComparator(MOScopeComparator)
to modify the order in whichManagedObject
s are stored. Since version 3.5.0, objects are saved in the order defined by theMOPriorityProvider
given in order to facilitate saving ofManagedObject
s that augment or extend base tables or depend on each other.- Parameters:
priorityProvider
- if notnull
, it provides the order for saving the managed objects byMOPriorityProvider.getPriorityMap(OctetString)
.
-
saveFullDump
public void saveFullDump(org.snmp4j.agent.mo.MOPriorityProvider priorityProvider, boolean includeVolatile) Saves the data of theMOServer
s associated with this instance to persistent storage independent of the currently setMOXodusPersistence.SavingStrategy
. In other words, any non-volatileManagedObject
will be saved to persistent storage.- Parameters:
priorityProvider
- if notnull
, it provides the order for saving the managed objects byMOPriorityProvider.getPriorityMap(OctetString)
.includeVolatile
- iftrue
,RandomAccessManagedObject
s withRandomAccessManagedObject.isVolatile()
true
will be saved too, otherwise those objects will not be saved.- Since:
- 3.6.0
-
encodeIndexOID
Encodes an index OID.- Parameters:
os
- theBEROutputStream
to encode to.type
- the type of the index OID (i.e.OID.getSyntax()
.oid
- the OID value to encode.- Throws:
IOException
- if the output stream throws anIOException
.
-
getIndexOIDLength
public static int getIndexOIDLength(int[] value) Get the index OID length from a index OID raw value.- Parameters:
value
- the OID raw value (seeOID.getValue()
.- Returns:
- the length of the index.
-
decodeIndexOID
public static int[] decodeIndexOID(org.snmp4j.asn1.BERInputStream is, org.snmp4j.asn1.BER.MutableByte type) throws IOException Decode a indexOID
from a BER input stream.- Parameters:
is
- theBERInputStream
containing the OID.type
- the object type read is returned here.- Returns:
- the decoded OID.
- Throws:
IOException
- if the encoded is wrong.
-
beforePrepareMOChange
public void beforePrepareMOChange(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A ManagedObject change is being prepared. To cancel preparation set the deny reason to a SNMPv2/v3 error status.- Specified by:
beforePrepareMOChange
in interfaceorg.snmp4j.agent.mo.MOChangeListener
- Parameters:
changeEvent
- the change event object.
-
afterPrepareMOChange
public void afterPrepareMOChange(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A change has been prepared. Setting the deny reason of the supplied event object will be ignored.- Specified by:
afterPrepareMOChange
in interfaceorg.snmp4j.agent.mo.MOChangeListener
- Parameters:
changeEvent
- the change event object.
-
beforeMOChange
public void beforeMOChange(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A ManagedObject change is being committed. To cancel the commit phase set the deny reason to a SNMPv2/v3 error status.NOTE: Canceling the commit phase must be avoided. Setting a deny reason has only an effect if
DeniableEventObject.isDeniable()
returnstrue
. Otherwise, you will need to throw an exception.- Specified by:
beforeMOChange
in interfaceorg.snmp4j.agent.mo.MOChangeListener
- Parameters:
changeEvent
- the change event object.
-
getPersistenceExceptionList
Gets the current exception list for keepingRandomAccessManagedObject
s persistent regardless theirRandomAccessManagedObject.isVolatile()
value or not. ARandomAccessManagedObject
is kept exceptionally persistent if its OID is key of the returned list and its value istrue
. If the value isfalse
, the correspondingRandomAccessManagedObject
will not be stored/restored even if it is non-volatile (i.e.,RandomAccessManagedObject.isVolatile()
returnsfalse
).- Returns:
- the exception list. If
null
is returned, there are no exceptions defined/active (same effect as an empty exception list). - Since:
- 3.6.0
-
setPersistenceExceptionList
Sets the current exception list for keepingRandomAccessManagedObject
s persistent regardless theirRandomAccessManagedObject.isVolatile()
value or not. ARandomAccessManagedObject
is kept exceptionally persistent if its OID is key of the provided list and its value istrue
. If the value isfalse
, the correspondingRandomAccessManagedObject
will not be stored/restored even if it is non-volatile (i.e.,RandomAccessManagedObject.isVolatile()
returnsfalse
). ForRandomAccessManagedObject
s with a rang eof OIDs, the lower bound of itsMOScope
has to be provided.- Parameters:
persistenceExceptionList
- the exception list. Ifnull
is provided, there are no exceptions defined/active (same effect as an empty exception list).- Since:
- 3.6.0
-
afterMOChange
public void afterMOChange(org.snmp4j.agent.mo.MOChangeEvent changeEvent) A change has been committed. Setting the deny reason of the supplied event object will be ignored.- Specified by:
afterMOChange
in interfaceorg.snmp4j.agent.mo.MOChangeListener
- Parameters:
changeEvent
- the change event object.
-
getContexts
protected Set<org.snmp4j.smi.OctetString> getContexts(org.snmp4j.agent.ManagedObject<?> managedObject) Get the contexts registered with allMOServer
for the givenManagedObject
.- Parameters:
managedObject
- the managed object.- Returns:
- the set of registered contexts, see also
MOServer.getRegisteredContexts(ManagedObject)
.
-