Author: cyberdo
Date: 2006-02-04 18:59:16 +0000 (Sat, 04 Feb 2006)
New Revision: 8004

Added:
   trunk/freenet/src/snmplib/SNMPCounter32.java
   trunk/freenet/src/snmplib/SNMPGauge32.java
   trunk/freenet/src/snmplib/SNMPInteger32.java
   trunk/freenet/src/snmplib/SNMPTypeWrapperNum.java
Modified:
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/snmplib/BEREncoder.java
   trunk/freenet/src/snmplib/DataConstantInt.java
   trunk/freenet/src/snmplib/DataStatisticsInfo.java
   trunk/freenet/src/snmplib/InfoSystem.java
   trunk/freenet/src/snmplib/SNMPAgent.java
   trunk/freenet/src/snmplib/SNMPTimeTicks.java
Log:
434:
All basic return values for SNMPv1 is now implemented.
Graphs can be properly mage with SNMP (the error wasn't SNMP's fault)
Still same OID:s implemented, but now return the proper type of their value.
Reorganized code to ease expanding of features.


Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-02-04 02:48:11 UTC (rev 
8003)
+++ trunk/freenet/src/freenet/node/Version.java 2006-02-04 18:59:16 UTC (rev 
8004)
@@ -20,7 +20,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 433;
+       private static final int buildNumber = 434;

        /** Oldest build of Fred we will talk to */
        private static final int lastGoodBuild = 403;

Modified: trunk/freenet/src/snmplib/BEREncoder.java
===================================================================
--- trunk/freenet/src/snmplib/BEREncoder.java   2006-02-04 02:48:11 UTC (rev 
8003)
+++ trunk/freenet/src/snmplib/BEREncoder.java   2006-02-04 18:59:16 UTC (rev 
8004)
@@ -1,5 +1,6 @@
 package snmplib;

+import java.lang.reflect.InvocationTargetException;
 import java.util.Stack;
 import java.util.Vector;

@@ -45,11 +46,11 @@
                                offset += dlen;
                                offset += intToBERBytes(dlen, buf, offset);
                                buf[offset++] = 0x02;
-                       } else if (o instanceof SNMPTimeTicks) {
-                               int dlen = 
intToBytes(((SNMPTimeTicks)o).timeValue(), buf, offset);
+                       } else if (o instanceof SNMPTypeWrapperNum) {
+                               int dlen = 
intToBytes(((SNMPTypeWrapperNum)o).getValue(), buf, offset);
                                offset += dlen;
                                offset += intToBERBytes(dlen, buf, offset);
-                               buf[offset++] = 0x43;
+                               buf[offset++] = 
((SNMPTypeWrapperNum)o).getTypeID();
                        } else if (o instanceof IDVector) {
                                int dlen = vecToBytes((IDVector)o, buf, offset);
                                offset += dlen;
@@ -138,6 +139,9 @@
        }


+       public void putSNMPTypeWrapperNum(SNMPTypeWrapperNum o) {
+               addToTop(o.clone());
+       }

        /*public void putInteger(int i) {
                addToTop(new Integer(i));
@@ -150,6 +154,10 @@
                addToTop(new Long(i));
        }

+       public void putCounter32(long i) {
+               addToTop(new SNMPCounter32(i));
+       }
+       
        public void putOctetString(byte buf[]) {
                addToTop(new ByteArrWrapper((byte[])buf.clone(), (byte)0x04));
        }

Modified: trunk/freenet/src/snmplib/DataConstantInt.java
===================================================================
--- trunk/freenet/src/snmplib/DataConstantInt.java      2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/DataConstantInt.java      2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -1,5 +1,6 @@
 package snmplib;

+
 public class DataConstantInt implements DataFetcher {
        private String OID;
        private int value;

Modified: trunk/freenet/src/snmplib/DataStatisticsInfo.java
===================================================================
--- trunk/freenet/src/snmplib/DataStatisticsInfo.java   2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/DataStatisticsInfo.java   2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -22,7 +22,7 @@
        public Object getSNMPData() {
                if (blocks == 0) {
                        long io[] = IOStatisticCollector.getTotalIO();
-                       return new Long(io[in?1:0]);
+                       return new SNMPCounter32(io[in?1:0]);
                }
                // else sum all fields up to <blocks>
                int res = 0;

Modified: trunk/freenet/src/snmplib/InfoSystem.java
===================================================================
--- trunk/freenet/src/snmplib/InfoSystem.java   2006-02-04 02:48:11 UTC (rev 
8003)
+++ trunk/freenet/src/snmplib/InfoSystem.java   2006-02-04 18:59:16 UTC (rev 
8004)
@@ -21,6 +21,10 @@
                case 3: //SNMPv2-MIB::sysUpTime.0
                        return ".1.3.6.1.2.1.1.3.0";

+               case 4: //UCD-SNMP-MIB::memTotalReal.0
+                       return ".1.3.6.1.4.1.2021.4.5";
+               case 5: //UCD-SNMP-MIB::memAvailReal.0
+                       return ".1.3.6.1.4.1.2021.4.6";


                }
@@ -30,14 +34,13 @@

        public Object getSNMPData(String oid) {
                Runtime r = Runtime.getRuntime();
-               int oidhc = oid.hashCode();
                //System.err.println("requesting: " + oid);
                if (oid.equals(".1.3.6.1.2.1.1.3.0")) //SNMPv2-MIB::sysUpTime.0
                        return new SNMPTimeTicks(System.currentTimeMillis()/10 
- created);
                if (oid.equals(".1.3.6.1.4.1.2021.4.5.0")) 
//UCD-SNMP-MIB::memTotalReal.0
-                       return new Long(r.totalMemory());
+                       return new SNMPInteger32(r.totalMemory());
                if (oid.equals(".1.3.6.1.4.1.2021.4.6.0")) 
//UCD-SNMP-MIB::memAvailReal.0
-                       return new Long(r.freeMemory());
+                       return new SNMPInteger32(r.freeMemory());


                if (oid.equals(".1.3.6.1.2.1.1.5.0")) //SNMPv2-MIB::sysName.0
@@ -45,9 +48,9 @@


                if (oid.equals(".1.3.6.1.4.1.2021.4.5")) 
//UCD-SNMP-MIB::memTotalReal.0
-                       return new Long(r.totalMemory());
+                       return new SNMPInteger32(r.totalMemory());
                if (oid.equals(".1.3.6.1.4.1.2021.4.6")) 
//UCD-SNMP-MIB::memAvailReal.0
-                       return new Long(r.freeMemory());
+                       return new SNMPInteger32(r.freeMemory());

                return null;
        }

Modified: trunk/freenet/src/snmplib/SNMPAgent.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPAgent.java    2006-02-04 02:48:11 UTC (rev 
8003)
+++ trunk/freenet/src/snmplib/SNMPAgent.java    2006-02-04 18:59:16 UTC (rev 
8004)
@@ -13,7 +13,7 @@
        private int port = 4445;

        /**
-        * @param args 
+        * @param args  
         */
        public static void main(String[] args) throws IOException {
                SNMPAgent.getSNMPAgent().addFetcher(new 
DataConstantInt("1.1.1", 10));
@@ -260,12 +260,12 @@
        be.startSequence(); // value
        be.putOID(splitToLong(aOID)); // oid
        //System.err.println("Will reply with OID: " + rc.OID + " -> " + aOID);
-       if (data instanceof Integer)
-               be.putInteger(((Integer)data).intValue());
-       else if (data instanceof Long)
-               be.putInteger(((Long)data).longValue());
-       else if (data instanceof SNMPTimeTicks)
-               be.putTimeticks(((SNMPTimeTicks)data).timeValue());
+       if (data instanceof Number)
+               be.putInteger(((Number)data).longValue());
+       else if (data instanceof SNMPTypeWrapperNum)
+               be.putSNMPTypeWrapperNum((SNMPTypeWrapperNum)data);
+//     else if (data instanceof SNMPCounter32)
+//             be.putCunter32(((SNMPCounter32)data).getValue());
        else if (data instanceof String) {
                char[] charr = ((String)data).toCharArray();
                byte[] byarr = new byte[charr.length];

Added: trunk/freenet/src/snmplib/SNMPCounter32.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPCounter32.java        2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/SNMPCounter32.java        2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -0,0 +1,16 @@
+package snmplib;
+
+public class SNMPCounter32 extends SNMPTypeWrapperNum {
+       public SNMPCounter32() { super(); }
+       public SNMPCounter32(long value) { super(value); }
+       
+       public void setValue(long value) {
+               // TODO: make it prettier!
+               this.value = new Long(value).intValue();
+               //System.err.println("Value cut from: " + value + " to " + 
this.value);
+       }
+       
+       protected void init() {
+               this.typeID = 0x41;
+       }
+}

Added: trunk/freenet/src/snmplib/SNMPGauge32.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPGauge32.java  2006-02-04 02:48:11 UTC (rev 
8003)
+++ trunk/freenet/src/snmplib/SNMPGauge32.java  2006-02-04 18:59:16 UTC (rev 
8004)
@@ -0,0 +1,16 @@
+package snmplib;
+
+public class SNMPGauge32 extends SNMPTypeWrapperNum {
+       public SNMPGauge32() { super(); }
+       public SNMPGauge32(long value) { super(value); }
+       
+       public void setValue(long value) {
+               // TODO: make it prettier!
+               this.value = new Long(value).intValue();
+               //System.err.println("Value cut from: " + value + " to " + 
this.value);
+       }
+       
+       protected void init() {
+               this.typeID = 0x42;
+       }
+}

Added: trunk/freenet/src/snmplib/SNMPInteger32.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPInteger32.java        2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/SNMPInteger32.java        2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -0,0 +1,16 @@
+package snmplib;
+
+public class SNMPInteger32 extends SNMPTypeWrapperNum {
+       public SNMPInteger32() { super(); }
+       public SNMPInteger32(long value) { super(value); }
+       
+       public void setValue(long value) {
+               // TODO: make it prettier!
+               this.value = new Long(value).intValue();
+               //System.err.println("Value cut from: " + value + " to " + 
this.value);
+       }
+       
+       protected void init() {
+               this.typeID = 0x02;
+       }
+}

Modified: trunk/freenet/src/snmplib/SNMPTimeTicks.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPTimeTicks.java        2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/SNMPTimeTicks.java        2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -1,27 +1,24 @@
 package snmplib;

-public class SNMPTimeTicks {
-       private long ticks;
+public class SNMPTimeTicks extends SNMPTypeWrapperNum {
+       public SNMPTimeTicks() { super(); }
+       public SNMPTimeTicks(long value) { super(value); }

-       public SNMPTimeTicks(long ticks) {
-               this.ticks = ticks;
+       protected void init() {
+               this.typeID = 0x43;
        }

-       public long timeValue() {
-               return ticks;
-       }
-       
        public String toString() {
-               long rest = ticks;
-               long dec = ticks%100;
+               long rest = value;
+               long dec = rest%100;
                rest = rest/100;
-               long sec = ticks%60;
+               long sec = rest%60;
                rest = rest/60;
-               long min = ticks%60;
+               long min = rest%60;
                rest = rest/60;
-               long hour = ticks%24;
+               long hour = rest%24;
                rest = rest/24;
-               long day = ticks;
+               long day = rest;
                return day + ":" + hour + ":" + min + ":" + sec + "." + dec;
        }
 }

Added: trunk/freenet/src/snmplib/SNMPTypeWrapperNum.java
===================================================================
--- trunk/freenet/src/snmplib/SNMPTypeWrapperNum.java   2006-02-04 02:48:11 UTC 
(rev 8003)
+++ trunk/freenet/src/snmplib/SNMPTypeWrapperNum.java   2006-02-04 18:59:16 UTC 
(rev 8004)
@@ -0,0 +1,58 @@
+package snmplib;
+
+public abstract class SNMPTypeWrapperNum {
+       protected long value;
+       protected byte typeID;
+       
+       /**
+        * This methd is used to initialize for instance typeID;
+        */
+       protected abstract void init();
+       
+       public SNMPTypeWrapperNum() {
+               this(0);
+       }
+       
+       public SNMPTypeWrapperNum(long value) {
+               this.setValue(value);
+               init();
+       }
+       
+       //public final byte typeID;
+       //= 0x02;
+       public byte getTypeID() {
+               System.err.println("Returning " + Integer.toHexString(typeID) + 
" for a " + this.getClass().toString());
+               return typeID;
+       }
+       
+       public long getValue() {
+               return value;
+       }
+       
+       public void setValue(long value) {
+               this.value = value;
+       }
+       
+       public Object clone() {
+               Object ret = null;
+               try {
+                       ret = this.getClass().newInstance();
+                       ((SNMPTypeWrapperNum)ret).setValue(getValue());
+               } catch (SecurityException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (InstantiationException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IllegalAccessException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               return ret;
+       }
+       
+       public String toString() {
+               return Long.toString(value);
+       }
+
+}


Reply via email to