1 20 21 package org.snmp4j.agent.util; 22 23 import org.snmp4j.smi.Variable; 24 import org.snmp4j.smi.OID; 25 import org.snmp4j.smi.Integer32; 26 import org.snmp4j.smi.UnsignedInteger32; 27 import org.snmp4j.smi.Counter64; 28 29 36 public class IndexGenerator { 37 38 private Variable seedSubIndex; 39 private boolean impliedLength; 40 41 46 public IndexGenerator(Variable seedSubIndex) { 47 if (!((seedSubIndex instanceof Integer32) || 48 (seedSubIndex instanceof UnsignedInteger32) || 49 (seedSubIndex instanceof Counter64))) { 50 throw new IllegalArgumentException ("A seed subindex of type "+ 51 seedSubIndex.getSyntaxString()+ 52 "is not supported"); 53 } 54 this.seedSubIndex = seedSubIndex; 55 } 56 57 65 public IndexGenerator(Variable seedSubIndex, boolean impliedLength) { 66 this(seedSubIndex); 67 this.impliedLength = impliedLength; 68 } 69 70 75 public synchronized OID getNextSubIndex() { 76 if (seedSubIndex instanceof Integer32) { 77 Integer32 i = (Integer32)seedSubIndex; 78 i.setValue(i.getValue()+1); 79 } 80 else if (seedSubIndex instanceof UnsignedInteger32) { 81 UnsignedInteger32 ui = (UnsignedInteger32)seedSubIndex; 82 ui.setValue(ui.getValue()+1); 83 } 84 else if (seedSubIndex instanceof Counter64) { 85 Counter64 c = (Counter64)seedSubIndex; 86 c.setValue(c.getValue()+1); 87 } 88 return seedSubIndex.toSubIndex(impliedLength); 89 } 90 } 91 | Popular Tags |