Class DefaultMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- java.lang.Object
-
- org.snmp4j.agent.mo.DefaultMOTable<R,C,M>
-
- All Implemented Interfaces:
ManagedObject<SubRequest<?>>
,ManagedObjectValueAccess<SubRequest<?>>
,ChangeableManagedObject<SubRequest<?>>
,GenericManagedObject
,MOTable<R,C,M>
,MOScope
,RandomAccessManagedObject<SubRequest<?>>
,RegisteredManagedObject<SubRequest<?>>
,SerializableManagedObject<SubRequest<?>>
- Direct Known Subclasses:
SNMPv2MIB.SysOREntry
public class DefaultMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>> extends Object implements MOTable<R,C,M>, MOScope, SerializableManagedObject<SubRequest<?>>, RandomAccessManagedObject<SubRequest<?>>
TheDefaultMOTable
class is the default implementation of theMOTable
class. For most use cases, it is not necessary to customize this class through deriving your own sub-class. Instead, using a differentMOTableModel
as table data provider is sufficient.The default table model can be used to hold the data of a SNMP conceptual table as real tabular data. If you want to implement a virtual table, you will have to directly implement the interfaces
MOTableModel
orMOMutableTableModel
to access the data based on the actual view.- Version:
- 3.0
- Author:
- Frank Fock
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DefaultMOTable.ChangeSet
-
Field Summary
Fields Modifier and Type Field Description protected List<MOChangeListener>
moChangeListeners
protected M
model
protected List<MOTableRowListener<R>>
moTableRowListeners
protected WeakHashMap<Request<?,?,?>,Map<org.snmp4j.smi.OID,R>>
newRows
protected WeakHashMap<Request<?,?,?>,Map<org.snmp4j.smi.OID,DefaultMOTable.ChangeSet>>
pendingChanges
protected List<RowModificationControlColumn>
rowModificationControlColumns
-
Constructor Summary
Constructors Constructor Description DefaultMOTable(org.snmp4j.smi.OID oid, MOTableIndex indexDef, C[] columns)
DefaultMOTable(org.snmp4j.smi.OID oid, MOTableIndex indexDef, C[] columns, M model)
Creates a new SNMP table with the specified "Entry" OID, INDEX, columns, andMOTableModel
.
-
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 thisManagedObject
.void
addMOTableRowListener(MOTableRowListener<R> l)
Adds aMOTableRowListener
listener that needs to be informed about row changes (creation, addition, removal).R
addNewRow(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues)
Creates a new row for this table with the supplied index and initial values and then immediately callsMOTable.addRow(MOTableRow)
.protected DefaultMOTable.ChangeSet
addPendingChanges(SubRequest<?> subRequest, MOTableRow row, boolean newRow)
boolean
addRow(R row)
Adds the supplied row to the underlying table model and fires the appropriateMOTableRowEvent
.protected boolean
addRowInternal(R row, MOTableRowEvent.OriginType originType)
Adds the supplied row to the underlying table model and fires the appropriateMOTableRowEvent
.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.R
createRow(org.snmp4j.smi.OID index)
Creates a new row for this table with the supplied index and default values.R
createRow(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues)
Creates a new row for this table with the supplied index and initial values.R
createRowInternal(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues, MOTableRowEvent.OriginType originType)
Creates a new row for this table with the supplied index and initial values.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 object identifier of the first object instance in the specified range.protected MOTableCellInfo
findCell(MOScope range, SubRequest<?> request)
protected void
fireAfterMOChange(MOChangeEvent changeEvent)
protected void
fireAfterPrepareMOChange(MOChangeEvent changeEvent)
protected void
fireBeforeMOChange(MOChangeEvent changeEvent)
protected void
fireBeforePrepareMOChange(MOChangeEvent changeEvent)
protected void
fireRowChanged(MOTableRowEvent<R> event)
protected void
fireRowExistsEvent(MOTableRowListener<R> l)
Fires aMOTableRowEvent.EXISTS
for all rows in this table if the provided listener actively subscribes to all such events this time by settingMOTableRowEvent.setSendNextEventsOfSameOrigin(boolean)
totrue
on the first rows and following events.void
get(SubRequest<?> request)
Processes a GET request and return the result in the supplied sub-request.MOTableCellInfo
getCellInfo(org.snmp4j.smi.OID oid)
Returns aMOTableCellInfo
instance for the supplied cell OID.org.snmp4j.smi.OID
getCellOID(org.snmp4j.smi.OID index, int col)
protected int
getChangesFromRequest(org.snmp4j.smi.OID index, MOTableRow row, SubRequest<?> request, org.snmp4j.smi.Variable[] values, boolean setDefaultValues, boolean newRow)
C
getColumn(int index)
Gets the column definition for the specified column.int
getColumnCount()
Returns the number of columns in this table.int
getColumnIndex(int id)
Returns the zero based column index for the specified column sub-identifier.C[]
getColumns()
Gets the column definitions for this table.org.snmp4j.smi.Variable[]
getDefaultValues()
Returns an array of variables where each variable corresponds to the column with the same index.MOTableRow
getDependentTableRow(org.snmp4j.smi.OID dependentTableID, org.snmp4j.smi.OID index)
Gets the row with the given index from the dependent table (thus a table which extends this table using aMOTableRelation
) with the provided table entry object identifier.org.snmp4j.smi.OID
getID()
Gets the unique object ID of the managed object.MOTableIndex
getIndexDef()
Gets the index definition of this table.org.snmp4j.smi.OID
getIndexPart(org.snmp4j.smi.OID anyOID)
Returns the index part of a column instance identifier of this table.org.snmp4j.smi.OID
getInstanceSubID(org.snmp4j.smi.OID instanceOID)
Returns the instance sub-identifier suffix for the given instance OID.org.snmp4j.smi.OID
getLowerBound()
Gets the lower bound OID of the scope.M
getModel()
Gets the table model of this table.protected Map<org.snmp4j.smi.OID,R>
getNewRows(Request<?,?,?> key)
org.snmp4j.smi.OID
getOID()
Returns the OID of the table entry.protected DefaultMOTable.ChangeSet
getPendingChangeSet(SubRequest<?> subRequest, org.snmp4j.smi.OID index)
protected org.snmp4j.smi.Variable[]
getPersistentValues(MOTableRow row)
Gets the values of a row that need to be made persistent on behalf of asave(MOOutput output)
call.protected List<RowModificationControlColumn>
getRowModificationControlColumns()
DefaultMOTable.ChangeSet
getRowPreview(Request<?,?,?> request, org.snmp4j.smi.OID index)
Gets aDefaultMOTable.ChangeSet
that contains the row values as if they had been already committed (not taking into account value modifications performed by the columns commit operations).MOScope
getScope()
Returns the scope of object identifiers this managed object is managing.org.snmp4j.smi.OID
getUpperBound()
Gets the upper bound OID of the scope.protected org.snmp4j.smi.Variable
getValue(MOTableRow row, int col, SubRequest<?> req)
org.snmp4j.smi.Variable
getValue(org.snmp4j.smi.OID cellOID)
Gets the value of the cell instance with the specified instance OID.org.snmp4j.smi.Variable
getValue(org.snmp4j.smi.OID index, int col)
Gets the value of the cell instance in the specified column and row.org.snmp4j.smi.Variable
getValue(org.snmp4j.smi.OID index, int col, SubRequest<?> req)
protected boolean
hasNewRows(Request<?,?,?> key)
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()
protected boolean
isChangeSetComplete(SubRequest<?> subRequest, org.snmp4j.smi.OID index, int column)
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.boolean
isVolatile()
Tests if this instance of a SerializableManagedObject should be serialized or deserialized through persistent storage load or save operation.boolean
isVolatile(org.snmp4j.smi.OID instanceSubID)
Tests if the specified instance 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).protected void
loadRow(org.snmp4j.smi.OID rowIndex, org.snmp4j.smi.Variable[] rawRowValues, int importMode)
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.int
removeAll()
Removes all rows from this table.int
removeAnyStorageType(Set<StorageType.StorageTypeEnum> storageTypeSet)
Remove all rows that have aStorageType
column with a value that matches one of the provided values.protected int
removeAnyStorageType(Set<StorageType.StorageTypeEnum> storageTypeSet, int storageTypeColumn)
void
removeMOChangeListener(MOChangeListener l)
Removes aMOChangeListener
from thisManagedObject
.void
removeMOTableRowListener(MOTableRowListener<R> l)
RemovesMOTableRowListener
instance.R
removeRow(org.snmp4j.smi.OID index)
Removes the row with the specified index and returns it if the operation was successful.void
save(MOOutput output)
Saves the (non-volatile) content of this managed object to the specified output (stream).void
setModel(M model)
boolean
setValue(org.snmp4j.smi.VariableBinding newValueAndInstancceOID)
Sets the value of a particular MIB object instance managed by thisManagedObject
.void
setVolatile(boolean isVolatile)
String
toString()
void
undo(SubRequest<?> request)
Compensates (undo) a (sub)request when a commit of another subrequest failed with an error.void
update(MOScope updateScope)
Update the content of this table that is covered by the supplied scope.protected void
update(MOScope range, SubRequest<?> request)
Update this table for the supplied search range and sub-request if it has not yet been updated for that request.
-
-
-
Field Detail
-
model
protected M extends MOTableModel<R> model
-
newRows
protected WeakHashMap<Request<?,?,?>,Map<org.snmp4j.smi.OID,R extends MOTableRow>> newRows
-
pendingChanges
protected WeakHashMap<Request<?,?,?>,Map<org.snmp4j.smi.OID,DefaultMOTable.ChangeSet>> pendingChanges
-
moChangeListeners
protected transient List<MOChangeListener> moChangeListeners
-
moTableRowListeners
protected transient List<MOTableRowListener<R extends MOTableRow>> moTableRowListeners
-
rowModificationControlColumns
protected transient List<RowModificationControlColumn> rowModificationControlColumns
-
-
Constructor Detail
-
DefaultMOTable
public DefaultMOTable(org.snmp4j.smi.OID oid, MOTableIndex indexDef, C[] columns)
-
DefaultMOTable
public DefaultMOTable(org.snmp4j.smi.OID oid, MOTableIndex indexDef, C[] columns, M model)
Creates a new SNMP table with the specified "Entry" OID, INDEX, columns, andMOTableModel
.- Parameters:
oid
- the OID of the SNMP table's Entry object. If the table is ifTable (1.3.6.1.2.1.2.2) then the OID to provide is 1.3.6.1.2.1.2.2.1 which is the ifEntry OID. By SMI rule, you can simply append ".1" to the table OID.indexDef
- the index definition of the table based on the INDEX clause of the table MIB definition.columns
- the column definitions which may also include non-accessible columns.model
- the table model holding the table data.
-
-
Method Detail
-
getCellInfo
public MOTableCellInfo getCellInfo(org.snmp4j.smi.OID oid)
Description copied from interface:MOTable
Returns aMOTableCellInfo
instance for the supplied cell OID. The returned object contains the index, column index, and column ID of the specified cell, if available.- Specified by:
getCellInfo
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
oid
- cell instance OID.- Returns:
- a
MOTableCellInfo
instance with the index, column index and column ID of the specified cell if available.
-
getColumnIndex
public int getColumnIndex(int id)
Description copied from interface:MOTable
Returns the zero based column index for the specified column sub-identifier.- Specified by:
getColumnIndex
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
id
- a column sub-identifier (normally one based) as defined in the MIB specification.- Returns:
- a value greater or equal to zero denoting the column index
of the column associated with
id
. The column index points into the column array returned byMOTable.getColumns()
. A value less than zero indicates that such a column does not exists currently but could be inserted at the(-n)-1
position ifn
is the returned value.
-
getColumn
public C getColumn(int index)
Description copied from interface:MOTable
Gets the column definition for the specified column.- Specified by:
getColumn
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the (zero-based) column index.- Returns:
- a
MOColumn
instance describing the attributes of requested column.
-
getColumnCount
public int getColumnCount()
Description copied from interface:MOTable
Returns the number of columns in this table.- Specified by:
getColumnCount
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- the column count.
-
createRow
public R createRow(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues)
Creates a new row for this table with the supplied index and initial values. If the underlying table model is not aMOMutableTableModel
instance or if one of theMOTableRowListener
deny the row creation attempt thennull
will be returned.- Specified by:
createRow
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the index OID of the new row.initialValues
- the initial values that should be assigned to the new row. If the array contains less values than this table has columns, default values will be created for the missing columns.- Returns:
- the created
MOTableRow
instance ornull
if the row cannot be created.
-
createRowInternal
public R createRowInternal(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues, MOTableRowEvent.OriginType originType)
Creates a new row for this table with the supplied index and initial values. If the underlying table model is not aMOMutableTableModel
instance or if one of theMOTableRowListener
deny the row creation attempt thennull
will be returned. TheMOTableRowEvent.OriginType
specifies whether this method is called on behalf of an external SNMP (AgentX) protocol operation or behalf of an internal load operation.- Parameters:
index
- the index OID of the new row.initialValues
- the initial values that should be assigned to the new row. If the array contains less values than this table has columns, default values will be created for the missing columns.originType
- the origin type (MOTableRowEvent.OriginType.external
orMOTableRowEvent.OriginType.internal
) of this event.- Returns:
- the created
MOTableRow
instance ornull
if the row cannot be created. - Since:
- 3.3.0
-
addNewRow
public R addNewRow(org.snmp4j.smi.OID index, org.snmp4j.smi.Variable[] initialValues)
Description copied from interface:MOTable
Creates a new row for this table with the supplied index and initial values and then immediately callsMOTable.addRow(MOTableRow)
. If one of theMOTableRowListener
deny the row creation attempt thennull
will be returned andMOTable.addRow(MOTableRow)
will not be called.This method is the same as calling:
R newRow = createRow(index, initialValues); if (newRow != null) { addRow(newRow); } return newRow;
- Specified by:
addNewRow
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the index OID of the new row.initialValues
- the initial values that should be assigned to the new row.- Returns:
- the created
MOTableRow
instance ornull
if the row cannot be created.
-
createRow
public R createRow(org.snmp4j.smi.OID index)
Description copied from interface:MOTable
Creates a new row for this table with the supplied index and default values. If one of theMOTableRowListener
deny the row creation attempt thennull
will be returned.- Specified by:
createRow
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the index OID of the new row.- Returns:
- the created
MOTableRow
instance ornull
if the row cannot be created.
-
addRow
public boolean addRow(R row)
Adds the supplied row to the underlying table model and fires the appropriateMOTableRowEvent
. Since this method is typically called during the commit phase of a SET request that creates a table, it should be avoided to return an error here. Instead, error checking should be placed in theprepare(org.snmp4j.agent.request.SubRequest<?>)
method. TheMOTableRowEvent.OriginType
of the firedMOTableRowEvent
is set toMOTableRowEvent.OriginType.external
.- Specified by:
addRow
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
row
- theMOTableRow
to add.- Returns:
true
if the row has been added orfalse
if it could not be added.
-
addRowInternal
protected boolean addRowInternal(R row, MOTableRowEvent.OriginType originType)
Adds the supplied row to the underlying table model and fires the appropriateMOTableRowEvent
. TheMOTableRowEvent.OriginType
specifies whether this method is called on behalf of an external SNMP (AgentX) protocol operation or behalf of an internal load operation.- Parameters:
row
- theMOTableRow
to add.originType
- the origin type (MOTableRowEvent.OriginType.external
orMOTableRowEvent.OriginType.internal
) of this event.- Returns:
true
if the row has been added orfalse
if it could not be added.
-
removeRow
public R removeRow(org.snmp4j.smi.OID index)
Description copied from interface:MOTable
Removes the row with the specified index and returns it if the operation was successful.- Specified by:
removeRow
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the index OID of the row to remove.- Returns:
- the removed row or
null
if the row cannot be found or cannot be removed.
-
removeAll
public int removeAll()
Removes all rows from this table. Before a row is removed the corresponding DELETE event is fired and listeners may veto these events for all rows. Only if there is no veto, a row will be deleted. The number of deleted rows is then returned.- Returns:
- the number of removed rows or -1 if the table model does not support row removal.
-
removeAnyStorageType
public int removeAnyStorageType(Set<StorageType.StorageTypeEnum> storageTypeSet)
Remove all rows that have aStorageType
column with a value that matches one of the provided values.- Parameters:
storageTypeSet
- a set ofStorageType.StorageTypeEnum
values.- Returns:
- the number of deleted rows or -1 if the table does not contain a
StorageType
column. - Since:
- 3.0
-
removeAnyStorageType
protected int removeAnyStorageType(Set<StorageType.StorageTypeEnum> storageTypeSet, int storageTypeColumn)
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.
-
getIndexPart
public final org.snmp4j.smi.OID getIndexPart(org.snmp4j.smi.OID anyOID)
Description copied from interface:MOTable
Returns the index part of a column instance identifier of this table.- Specified by:
getIndexPart
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
anyOID
- the OID of a column instance. The returned result is undefined, when this OID is not a column instance OID.- Returns:
- an OID representing the index OID of the row identified by the
instanceIdentifier
column instance OID.
-
getCellOID
public org.snmp4j.smi.OID getCellOID(org.snmp4j.smi.OID index, int col)
-
find
public org.snmp4j.smi.OID find(MOScope range)
Description copied from interface:MOTable
Finds the object identifier of the first object instance in the specified range.- Specified by:
find
in interfaceManagedObject<R extends MOTableRow>
- Specified by:
find
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
range
- aMOScope
specifying the search range.- Returns:
- the OID of the lexicographic first instance in the search range or
null
if no such instance exists.
-
findCell
protected MOTableCellInfo findCell(MOScope range, SubRequest<?> request)
-
getScope
public MOScope getScope()
Description copied from interface:ManagedObject
Returns the scope of object identifiers this managed object is managing.- Specified by:
getScope
in interfaceManagedObject<R extends MOTableRow>
- Returns:
- the
MOScope
that defines a range (possibly also a single or none instance OID) of object IDs managed by this managed object.
-
getValue
public org.snmp4j.smi.Variable getValue(org.snmp4j.smi.OID cellOID)
Description copied from interface:MOTable
Gets the value of the cell instance with the specified instance OID.- Specified by:
getValue
in interfaceManagedObjectValueAccess<R extends MOTableRow>
- Specified by:
getValue
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
cellOID
- the instance OID of the requested cell.- Returns:
- the value of the cell or
null
if such a cell does not exist.
-
getValue
public org.snmp4j.smi.Variable getValue(org.snmp4j.smi.OID index, int col, SubRequest<?> req)
-
getValue
public org.snmp4j.smi.Variable getValue(org.snmp4j.smi.OID index, int col)
Description copied from interface:MOTable
Gets the value of the cell instance in the specified column and row.- Specified by:
getValue
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
index
- the row index of the cell.col
- the column index of the cell.- Returns:
- the value of the cell or
null
if such a cell does not exist.
-
getValue
protected org.snmp4j.smi.Variable getValue(MOTableRow row, int col, SubRequest<?> req)
-
update
public void update(MOScope updateScope)
Update the content of this table that is covered by the supplied scope.This method is part of the
UpdatableManagedObject
interface. Although theDefaultMOTable
does not implement that interface, subclasses of this class may do so easily by overriding this hook-up method.- Parameters:
updateScope
- the scope to update. Ifnull
the whole managed object is updated.- Since:
- 1.2
- See Also:
update(MOScope range, SubRequest request)
-
update
protected void update(MOScope range, SubRequest<?> request)
Update this table for the supplied search range and sub-request if it has not yet been updated for that request.By default, the
update(MOScope updateScope)
is being called on behalf of this method call (which itself does not nothing by default). You may choose either to implement theUpdatableManagedObject
interface and implement its interface in a subclass. Then it is recommended to overwrite this method by an empty method. Otherwise, do not implement theUpdatableManagedObject
interface.- Parameters:
range
- the search range.request
- the sub-request triggered the update ornull
if that request cannot be determined.
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.- Returns:
true
if the search request found an appropriate instance,false
otherwise.
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.
-
getRowModificationControlColumns
protected List<RowModificationControlColumn> getRowModificationControlColumns()
-
getChangesFromRequest
protected int getChangesFromRequest(org.snmp4j.smi.OID index, MOTableRow row, SubRequest<?> request, org.snmp4j.smi.Variable[] values, boolean setDefaultValues, boolean newRow)
-
hasNewRows
protected boolean hasNewRows(Request<?,?,?> key)
-
isChangeSetComplete
protected boolean isChangeSetComplete(SubRequest<?> subRequest, org.snmp4j.smi.OID index, int column)
-
addPendingChanges
protected DefaultMOTable.ChangeSet addPendingChanges(SubRequest<?> subRequest, MOTableRow row, boolean newRow)
-
getPendingChangeSet
protected DefaultMOTable.ChangeSet getPendingChangeSet(SubRequest<?> subRequest, org.snmp4j.smi.OID index)
-
getRowPreview
public DefaultMOTable.ChangeSet getRowPreview(Request<?,?,?> request, org.snmp4j.smi.OID index)
Gets aDefaultMOTable.ChangeSet
that contains the row values as if they had been already committed (not taking into account value modifications performed by the columns commit operations). This method can be called when processing commits of otherManagedObject
s on behalf of the same SNMP request to determine what a certain row will contain if the this SET will be successful.- Parameters:
request
- the request to preview. Ifnull
or no pending changes exist for this request, the current row values are returned.index
- the row index of the row to return.- Returns:
- the values as if the provided
request
has already been committed of the row identified byindex
. - Since:
- 3.0
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.
-
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<R extends MOTableRow>
- Parameters:
request
- theSubRequest
to process.
-
getOID
public org.snmp4j.smi.OID getOID()
Description copied from interface:MOTable
Returns the OID of the table entry.- Specified by:
getOID
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- a table entry OID (including the .1 suffix).
-
setModel
public void setModel(M model)
-
setVolatile
public void setVolatile(boolean isVolatile)
-
getModel
public M getModel()
Description copied from interface:MOTable
Gets the table model of this table.- Specified by:
getModel
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- a MOTableModel instance.
-
getColumns
public C[] getColumns()
Description copied from interface:MOTable
Gets the column definitions for this table.- Specified by:
getColumns
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- an array with the column definitions of this table.
-
getIndexDef
public MOTableIndex getIndexDef()
Description copied from interface:MOTable
Gets the index definition of this table.- Specified by:
getIndexDef
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- a MOTableIndex instance containing the sub-index definitions for this table.
-
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<R extends MOTableRow>
- Specified by:
isVolatile
in interfaceSerializableManagedObject<R extends MOTableRow>
- 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.
-
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
-
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.
-
isCovered
public boolean isCovered(MOScope other)
Description copied from interface:MOScope
Checks whether the supplied scope is covered by this scope.
-
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.
-
addMOChangeListener
public void addMOChangeListener(MOChangeListener l)
Description copied from interface:ChangeableManagedObject
Adds aMOChangeListener
that needs to be informed about state changes of thisManagedObject
.- Specified by:
addMOChangeListener
in interfaceChangeableManagedObject<R extends MOTableRow>
- Parameters:
l
- aMOChangeListener
instance.
-
removeMOChangeListener
public void removeMOChangeListener(MOChangeListener l)
Description copied from interface:ChangeableManagedObject
Removes aMOChangeListener
from thisManagedObject
.- Specified by:
removeMOChangeListener
in interfaceChangeableManagedObject<R extends MOTableRow>
- Parameters:
l
- aMOChangeListener
instance.
-
fireBeforePrepareMOChange
protected void fireBeforePrepareMOChange(MOChangeEvent changeEvent)
-
fireAfterPrepareMOChange
protected void fireAfterPrepareMOChange(MOChangeEvent changeEvent)
-
fireBeforeMOChange
protected void fireBeforeMOChange(MOChangeEvent changeEvent)
-
fireAfterMOChange
protected void fireAfterMOChange(MOChangeEvent changeEvent)
-
addMOTableRowListener
public void addMOTableRowListener(MOTableRowListener<R> l)
Description copied from interface:MOTable
Adds aMOTableRowListener
listener that needs to be informed about row changes (creation, addition, removal).- Specified by:
addMOTableRowListener
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
l
- aMOTableRowListener
instance.
-
getDependentTableRow
public MOTableRow getDependentTableRow(org.snmp4j.smi.OID dependentTableID, org.snmp4j.smi.OID index)
Gets the row with the given index from the dependent table (thus a table which extends this table using aMOTableRelation
) with the provided table entry object identifier.- Parameters:
dependentTableID
- the OID of theMOTable
that is linked with aMOTableRelation
as dependent table.index
- the row index of the dependent's table row that should be returned.- Returns:
- a
MOTableRow
if such a row exists ornull
otherwise. - Since:
- 3.0
-
fireRowExistsEvent
protected void fireRowExistsEvent(MOTableRowListener<R> l)
Fires aMOTableRowEvent.EXISTS
for all rows in this table if the provided listener actively subscribes to all such events this time by settingMOTableRowEvent.setSendNextEventsOfSameOrigin(boolean)
totrue
on the first rows and following events.- Parameters:
l
- the table row listener.
-
removeMOTableRowListener
public void removeMOTableRowListener(MOTableRowListener<R> l)
Description copied from interface:MOTable
RemovesMOTableRowListener
instance.- Specified by:
removeMOTableRowListener
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Parameters:
l
- aMOTableRowListener
instance.
-
fireRowChanged
protected void fireRowChanged(MOTableRowEvent<R> event)
-
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<R extends MOTableRow>
- 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.
-
isVolatile
public boolean isVolatile(org.snmp4j.smi.OID instanceSubID)
Tests if the specified instance should be serialized or deserialized through persistent storage load or save operation.- Specified by:
isVolatile
in interfaceRandomAccessManagedObject<R extends MOTableRow>
- Parameters:
instanceSubID
- the OID suffix identifying the instance to check, for scalars this is "0" and for tabular objects this is the row index.- Returns:
true
if the specified sub-instance exists and isStorageType.volatile_
.- Since:
- 3.2.0
-
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<R extends MOTableRow>
- 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<R extends MOTableRow>
-
getInstanceSubID
public org.snmp4j.smi.OID getInstanceSubID(org.snmp4j.smi.OID instanceOID)
Returns the instance sub-identifier suffix for the given instance OID. Any implementations of this method must use the same instance notion of instance identifier asimportInstance(OID, List, ImportMode)
,exportInstance(OID)
, andinstanceIterator()
.- Specified by:
getInstanceSubID
in interfaceRandomAccessManagedObject<R extends MOTableRow>
- Parameters:
instanceOID
- the fully qualifiedOID
of a SNMPVariable
.- Returns:
- the instance ID that uniquely identifies the object instance the specified
Variable
belongs to within thisRandomAccessManagedObject
.
-
instanceCount
public int instanceCount()
Returns the number of instances managed by thisManagedObject
.- Specified by:
instanceCount
in interfaceRandomAccessManagedObject<R extends MOTableRow>
- Returns:
- the number of instances managed by this object.
-
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<R extends MOTableRow>
- 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<R extends MOTableRow>
- Parameters:
input
- aMOInput
instance.- Throws:
IOException
- if an MOInput operation fails.
-
loadRow
protected void loadRow(org.snmp4j.smi.OID rowIndex, org.snmp4j.smi.Variable[] rawRowValues, int importMode)
-
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<R extends MOTableRow>
- Parameters:
output
- aMOOutput
instance.- Throws:
IOException
- if an MOOutput operation fails.
-
getPersistentValues
protected org.snmp4j.smi.Variable[] getPersistentValues(MOTableRow row)
Gets the values of a row that need to be made persistent on behalf of asave(MOOutput output)
call.- Parameters:
row
- a MOTableRow that is being saved into a MOOutput stream.- Returns:
- an array of
Variable
instances that need to be saved. Typically, these are all columns of the row - including hidden extension columns/values. - Since:
- 1.2
-
getDefaultValues
public org.snmp4j.smi.Variable[] getDefaultValues()
Description copied from interface:MOTable
Returns an array of variables where each variable corresponds to the column with the same index. If a column has a default value, the returned variable is notnull
and contains that default value.- Specified by:
getDefaultValues
in interfaceMOTable<R extends MOTableRow,C extends MOColumn,M extends MOTableModel<R>>
- Returns:
- the default variables for a newly created row as an array of
Variable
instances.
-
covers
public boolean covers(org.snmp4j.smi.OID oid)
Description copied from interface:MOScope
Checks if this scope covers the supplied OID.
-
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<R extends MOTableRow>
- 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.
-
-