From f3f7537ec650e516e23197ad0583ee86fc3cd23e Mon Sep 17 00:00:00 2001 From: sponge <sponge@mail.i2p> Date: Sat, 11 Oct 2008 07:45:30 +0000 Subject: [PATCH] Set BOB source/target to JDK 5 (AKA 1.5) Minor bugfixes/code cleanup on BOB Add/Cleanup some documentation to streaming lib javadocs --- apps/BOB/nbproject/project.properties | 4 +- apps/BOB/src/net/i2p/BOB/BOB.java | 8 +-- apps/BOB/src/net/i2p/BOB/I2Plistener.java | 12 ++--- apps/BOB/src/net/i2p/BOB/I2PtoTCP.java | 8 +-- apps/BOB/src/net/i2p/BOB/MUXlisten.java | 8 +-- apps/BOB/src/net/i2p/BOB/Main.java | 4 +- apps/BOB/src/net/i2p/BOB/TCPio.java | 12 ++--- apps/BOB/src/net/i2p/BOB/TCPlistener.java | 39 ++++++++++----- apps/BOB/src/net/i2p/BOB/TCPtoI2P.java | 16 +++--- apps/BOB/src/net/i2p/BOB/UDPIOthread.java | 50 +++++++++---------- apps/BOB/src/net/i2p/BOB/doCMDS.java | 5 ++ apps/BOB/src/net/i2p/BOB/nickname.java | 19 +++---- .../client/streaming/ConnectionManager.java | 2 +- .../streaming/I2PSocketManagerFull.java | 2 + 14 files changed, 103 insertions(+), 86 deletions(-) diff --git a/apps/BOB/nbproject/project.properties b/apps/BOB/nbproject/project.properties index fcc825dcea..89d7ad1da6 100644 --- a/apps/BOB/nbproject/project.properties +++ b/apps/BOB/nbproject/project.properties @@ -40,8 +40,8 @@ javac.classpath=\ # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false -javac.source=1.4 -javac.target=1.4 +javac.source=1.5 +javac.target=1.5 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir}:\ diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index b9b48dcfa7..0221723410 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -39,7 +39,7 @@ import net.i2p.util.SimpleTimer; /** * * BOB, main command socket listener, launches the command parser engine. - * + * * @author sponge */ public class BOB { @@ -53,7 +53,7 @@ public class BOB { /** * Log a warning - * + * * @param arg */ public static void warn(String arg) { @@ -63,7 +63,7 @@ public class BOB { /** * Log an error - * + * * @param arg */ public static void error(String arg) { @@ -73,7 +73,7 @@ public class BOB { /** * Listen for incoming connections and handle them - * + * * @param args */ public static void main(String[] args) { diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java index a077346bfd..c306c0ebf2 100644 --- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java +++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java @@ -58,16 +58,15 @@ public class I2Plistener implements Runnable { this.info = info; this._log = _log; this.socketManager = S; - serverSocket = socketManager.getServerSocket(); + serverSocket = this.socketManager.getServerSocket(); tgwatch = 1; } /** * Simply listen on I2P port, and thread connections * - * @throws RuntimeException */ - public void run() throws RuntimeException { + public void run() { boolean g = false; I2PSocket sessSocket = null; @@ -105,7 +104,7 @@ public class I2Plistener implements Runnable { } } catch(I2PException e) { - // System.out.println("Exception " + e); + // System.out.println("Exception " + e); } } @@ -123,7 +122,8 @@ public class I2Plistener implements Runnable { // nop } } -// System.out.println("STOP Thread count " + Thread.activeCount()); + + // System.out.println("STOP Thread count " + Thread.activeCount()); // need to kill off the socket manager too. I2PSession session = socketManager.getSession(); if(session != null) { @@ -134,7 +134,5 @@ public class I2Plistener implements Runnable { } // System.out.println("destroySession Thread count " + Thread.activeCount()); } - - } } diff --git a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java index 7e68c6a2b1..4d5f239c6c 100644 --- a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java +++ b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java @@ -30,18 +30,18 @@ import net.i2p.client.streaming.I2PSocket; /** * Process I2P->TCP - * + * * @author sponge */ public class I2PtoTCP implements Runnable { private I2PSocket I2P; - private nickname info, database; + private nickname info, database; private Socket sock; /** * Constructor - * + * * @param I2Psock * @param info * @param database @@ -54,7 +54,7 @@ public class I2PtoTCP implements Runnable { /** * I2P stream to TCP stream thread starter - * + * */ public void run() { diff --git a/apps/BOB/src/net/i2p/BOB/MUXlisten.java b/apps/BOB/src/net/i2p/BOB/MUXlisten.java index c640a81d4d..bfdf2b3de7 100644 --- a/apps/BOB/src/net/i2p/BOB/MUXlisten.java +++ b/apps/BOB/src/net/i2p/BOB/MUXlisten.java @@ -34,7 +34,7 @@ import net.i2p.util.Log; /** * * Multiplex listeners for TCP and I2P - * + * * @author sponge */ public class MUXlisten implements Runnable { @@ -48,7 +48,7 @@ public class MUXlisten implements Runnable { /** * Constructor - * + * * @param info * @param database * @param _log @@ -73,13 +73,13 @@ public class MUXlisten implements Runnable { this.info.add("STARTING", Boolean.TRUE); this.info.releaseWriteLock(); this.database.releaseWriteLock(); - + socketManager = I2PSocketManagerFactory.createManager(prikey, Q); } /** * MUX sockets, fire off a thread to connect, get destination info, and do I/O - * + * */ public void run() { diff --git a/apps/BOB/src/net/i2p/BOB/Main.java b/apps/BOB/src/net/i2p/BOB/Main.java index 3dfc9af211..26823ff390 100644 --- a/apps/BOB/src/net/i2p/BOB/Main.java +++ b/apps/BOB/src/net/i2p/BOB/Main.java @@ -21,7 +21,6 @@ * * ...for any additional details and liscense questions. */ - package net.i2p.BOB; import net.i2p.client.streaming.RetransmissionTimer; @@ -29,11 +28,10 @@ import net.i2p.util.SimpleTimer; /** * Start from command line - * + * * @author sponge * */ - public class Main { /** diff --git a/apps/BOB/src/net/i2p/BOB/TCPio.java b/apps/BOB/src/net/i2p/BOB/TCPio.java index bce2cdde1e..f6286f3290 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPio.java +++ b/apps/BOB/src/net/i2p/BOB/TCPio.java @@ -40,7 +40,7 @@ public class TCPio implements Runnable { /** * Constructor - * + * * @param Ain * @param Aout * @param info @@ -60,7 +60,7 @@ public class TCPio implements Runnable { * Copy from source to destination... * and yes, we are totally OK to block here on writes, * The OS has buffers, and I intend to use them. - * + * */ public void run() { int b; @@ -87,11 +87,11 @@ public class TCPio implements Runnable { } } else { /* according to the specs: - * - * The total number of bytes read into the buffer, - * or -1 if there is no more data because the end of + * + * The total number of bytes read into the buffer, + * or -1 if there is no more data because the end of * the stream has been reached. - * + * */ return; } diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java index f06b1da276..519970d6e5 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java +++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java @@ -41,7 +41,7 @@ import net.i2p.util.Log; */ public class TCPlistener implements Runnable { - private nickname info, database; + private nickname info, database; private Log _log; private int tgwatch; public I2PSocketManager socketManager; @@ -65,11 +65,12 @@ public class TCPlistener implements Runnable { /** * Simply listen on TCP port, and thread connections - * @throws java.lang.RuntimeException + * */ - public void run() throws RuntimeException { + public void run() { boolean g = false; - database.getReadLock(); + boolean spin = true; + database.getReadLock(); info.getReadLock(); if(info.exists("OUTPORT")) { tgwatch = 2; @@ -79,15 +80,14 @@ public class TCPlistener implements Runnable { ServerSocket listener = new ServerSocket(Integer.parseInt(info.get("INPORT").toString()), backlog, InetAddress.getByName(info.get("INHOST").toString())); Socket server = new Socket(); listener.setSoTimeout(1000); - info.releaseReadLock(); - database.releaseReadLock(); - boolean spin = true; - while(spin) { - database.getReadLock(); - info.getReadLock(); - spin = info.get("RUNNING").equals(Boolean.TRUE); info.releaseReadLock(); database.releaseReadLock(); + while(spin) { + database.getReadLock(); + info.getReadLock(); + spin = info.get("RUNNING").equals(Boolean.TRUE); + info.releaseReadLock(); + database.releaseReadLock(); // System.out.println("Thread count " + Thread.activeCount()); try { server = listener.accept(); @@ -101,11 +101,24 @@ public class TCPlistener implements Runnable { Thread t = new Thread(conn_c, "BOBTCPtoI2P"); t.start(); g = false; - } + } } listener.close(); } catch(IOException ioe) { - // throw new RuntimeException(ioe); + // Fatal failure, cause a stop event + database.getReadLock(); + info.getReadLock(); + spin = info.get("RUNNING").equals(Boolean.TRUE); + info.releaseReadLock(); + database.releaseReadLock(); + if(spin) { + database.getWriteLock(); + info.getWriteLock(); + info.add("STOPPING", new Boolean(true)); + info.add("RUNNING", new Boolean(false)); + info.releaseWriteLock(); + database.releaseWriteLock(); + } } //System.out.println("STOP!"); diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java index 00b306fca4..dd199ecb7c 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java +++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java @@ -37,7 +37,7 @@ import net.i2p.data.Destination; import net.i2p.i2ptunnel.I2PTunnel; /** - * + * * Process TCP->I2P * * @author sponge @@ -45,17 +45,17 @@ import net.i2p.i2ptunnel.I2PTunnel; public class TCPtoI2P implements Runnable { private I2PSocket I2P; - private nickname info, database; + private nickname info, database; private Socket sock; private I2PSocketManager socketManager; /** - * This is a more forgiving readline, + * This is a more forgiving readline, * it works on unbuffered streams - * + * * @param in * @return line of text as a String - * @throws Exception + * @throws Exception */ public static String Lread(InputStream in) throws Exception { String S; @@ -85,7 +85,7 @@ public class TCPtoI2P implements Runnable { * @param i2p * @param socket * @param info - * @param database + * @param database */ TCPtoI2P(I2PSocketManager i2p, Socket socket, nickname info, nickname database) { this.sock = socket; @@ -96,7 +96,7 @@ public class TCPtoI2P implements Runnable { /** * Print an error message to out - * + * * @param e * @param out * @throws java.io.IOException @@ -153,7 +153,7 @@ public class TCPtoI2P implements Runnable { } } - } catch(I2PException e) { + } catch(I2PException e) { Emsg("ERROR " + e.toString(), out); } catch(ConnectException e) { Emsg("ERROR " + e.toString(), out); diff --git a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java index deb22b223c..0dce4a0c27 100644 --- a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java +++ b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java @@ -21,7 +21,6 @@ * * ...for any additional details and liscense questions. */ - package net.i2p.BOB; import java.io.DataInputStream; @@ -34,10 +33,9 @@ import net.i2p.client.I2PSessionListener; import net.i2p.data.Destination; import net.i2p.util.Log; - /** * UDP IO on I2P - * + * * FIX ME: Untested, and incomplete! * I have no personal need to UDP yet, * however alot of p2p apps pretty much demand it. @@ -55,24 +53,26 @@ public class UDPIOthread implements I2PSessionListener, Runnable { private I2PSession _session; private Destination _peerDestination; private boolean up; - -/** - * Constructor - * @param info - * @param _log - * @param socket - * @param _session - */ UDPIOthread(nickname info, Log _log, Socket socket, I2PSession _session) { + + /** + * Constructor + * @param info + * @param _log + * @param socket + * @param _session + */ + UDPIOthread(nickname info, Log _log, Socket socket, I2PSession _session) { this.info = info; this._log = _log; this.socket = socket; this._session = _session; } -/** - * - */ - public void run() { + + /** + * + */ + public void run() { byte data[] = new byte[1024]; up = true; try { @@ -103,12 +103,13 @@ public class UDPIOthread implements I2PSessionListener, Runnable { } } } -/** - * - * @param session - * @param msgId - * @param size - */ + + /** + * + * @param session + * @param msgId + * @param size + */ public void messageAvailable(I2PSession session, int msgId, long size) { // _log.debug("Message available: id = " + msgId + " size = " + size); try { @@ -123,22 +124,21 @@ public class UDPIOthread implements I2PSessionListener, Runnable { } // Great, can these be used to kill ourselves. - /** required by {@link I2PSessionListener I2PSessionListener} to notify of disconnect */ public void disconnected(I2PSession session) { _log.debug("Disconnected"); - // up = false; + // up = false; } /** required by {@link I2PSessionListener I2PSessionListener} to notify of error */ public void errorOccurred(I2PSession session, String message, Throwable error) { _log.debug("Error occurred: " + message, error); - // up = false; + // up = false; } /** required by {@link I2PSessionListener I2PSessionListener} to notify of abuse */ public void reportAbuse(I2PSession session, int severity) { _log.debug("Abuse reported of severity " + severity); - // up = false; + // up = false; } } diff --git a/apps/BOB/src/net/i2p/BOB/doCMDS.java b/apps/BOB/src/net/i2p/BOB/doCMDS.java index b1527997e5..2fb363b189 100644 --- a/apps/BOB/src/net/i2p/BOB/doCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/doCMDS.java @@ -70,6 +70,9 @@ public class doCMDS implements Runnable { private static final String P_RUNNING = "RUNNING"; private static final String P_STARTING = "STARTING"; private static final String P_STOPPING = "STOPPING"; +// private static final String P_INSTATE = "INSTATE"; +// private static final String P_OUTSTATE = "OUTSTATE"; + /* command strings */ private static final String C_help = "help"; private static final String C_clear = "clear"; @@ -490,6 +493,8 @@ public class doCMDS implements Runnable { wlock(); database.add(Arg, nickinfo); nickinfo.add(P_NICKNAME, Arg); +// nickinfo.add(P_INSTATE,new Boolean(false)); +// nickinfo.add(P_OUTSTATE,new Boolean(false)); nickinfo.add(P_STARTING, Boolean.FALSE); nickinfo.add(P_RUNNING, Boolean.FALSE); nickinfo.add(P_STOPPING, Boolean.FALSE); diff --git a/apps/BOB/src/net/i2p/BOB/nickname.java b/apps/BOB/src/net/i2p/BOB/nickname.java index cef5950d9d..d1ece7be79 100644 --- a/apps/BOB/src/net/i2p/BOB/nickname.java +++ b/apps/BOB/src/net/i2p/BOB/nickname.java @@ -25,18 +25,19 @@ package net.i2p.BOB; /** * Internal database to relate nicknames to options to values - * + * * @author sponge */ public class nickname { private static final int maxWritersWaiting = 2; private volatile Object[][] data; - private volatile int index, writersWaiting, readers; + private volatile int index, writersWaiting, readers; private volatile boolean writingInProgress; + /** * make initial NULL object - * + * */ public nickname() { this.data = new Object[1][2]; @@ -94,7 +95,7 @@ public class nickname { /** * Delete an object from array if it exists - * + * * @param key */ public synchronized void kill(Object key) { @@ -110,7 +111,7 @@ public class nickname { } olddata = new Object[index + 2][2]; // copy to olddata, skipping 'k' - for(i = 0 , l = 0; l < index; i++, l++) { + for(i = 0 , l = 0; l < index; i++, l++) { if(i == k) { l++; didsomething++; @@ -126,7 +127,7 @@ public class nickname { /** * Add object to the array, deletes the old one if it exists - * + * * @param key * @param val */ @@ -149,7 +150,7 @@ public class nickname { /** * Get the object, and return it, throws RuntimeException - * + * * @param key * @return Object * @throws java.lang.RuntimeException @@ -165,7 +166,7 @@ public class nickname { /** * returns true if an object exists, else returns false - * + * * @param key * @return true if an object exists, else returns false */ @@ -180,7 +181,7 @@ public class nickname { } /** - * + * * @param i index * @return an indexed Object * @throws java.lang.RuntimeException diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java index 762260ea20..1e500d997b 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java @@ -113,7 +113,7 @@ public class ConnectionManager { public void setAllowIncomingConnections(boolean allow) { _connectionHandler.setActive(allow); } - /** should we acceot connections, or just reject everyone? */ + /** @return if we should accept connections */ public boolean getAllowIncomingConnections() { return _connectionHandler.getActive(); } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java index c647741b59..764b4089df 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java @@ -181,6 +181,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { * @param peer Destination to connect to * @param options I2P socket options to be used for connecting * + * @return I2PSocket if successful * @throws NoRouteToHostException if the peer is not found or not reachable * @throws I2PException if there is some other I2P-related problem */ @@ -215,6 +216,7 @@ public class I2PSocketManagerFull implements I2PSocketManager { * * @param peer Destination to connect to * + * @return I2PSocket if successful * @throws NoRouteToHostException if the peer is not found or not reachable * @throws I2PException if there is some other I2P-related problem */ -- GitLab