diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java b/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java index 2d1a5b63b9..302dbd6299 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMEventHandler.java @@ -13,13 +13,13 @@ import net.i2p.util.Log; */ public class SAMEventHandler extends SAMClientEventListenerImpl { //private I2PAppContext _context; - private Log _log; + private final Log _log; private Boolean _helloOk; - private Object _helloLock = new Object(); + private final Object _helloLock = new Object(); private Boolean _sessionCreateOk; - private Object _sessionCreateLock = new Object(); - private Object _namingReplyLock = new Object(); - private Map _namingReplies = new HashMap(); + private final Object _sessionCreateLock = new Object(); + private final Object _namingReplyLock = new Object(); + private final Map _namingReplies = new HashMap(); public SAMEventHandler(I2PAppContext ctx) { //_context = ctx; diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java index 0421a64580..d25d1f0537 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java @@ -16,10 +16,10 @@ import net.i2p.util.Log; * */ public class SAMReader { - private Log _log; - private InputStream _inRaw; - private SAMClientEventListener _listener; - private boolean _live; + private final Log _log; + private final InputStream _inRaw; + private final SAMClientEventListener _listener; + private volatile boolean _live; public SAMReader(I2PAppContext context, InputStream samIn, SAMClientEventListener listener) { _log = context.logManager().getLog(SAMReader.class); @@ -32,6 +32,7 @@ public class SAMReader { I2PAppThread t = new I2PAppThread(new Runner(), "SAM reader"); t.start(); } + public void stopReading() { _live = false; } /** diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java index a0d82d777e..29e040394d 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java @@ -20,21 +20,21 @@ import net.i2p.util.Log; * */ public class SAMStreamSend { - private I2PAppContext _context; - private Log _log; - private String _samHost; - private String _samPort; - private String _destFile; - private String _dataFile; - private String _conOptions; + private final I2PAppContext _context; + private final Log _log; + private final String _samHost; + private final String _samPort; + private final String _destFile; + private final String _dataFile; + private final String _conOptions; private Socket _samSocket; private OutputStream _samOut; private InputStream _samIn; private SAMReader _reader; //private boolean _dead; - private SAMEventHandler _eventHandler; + private final SAMEventHandler _eventHandler; /** Connection id (Integer) to peer (Flooder) */ - private Map _remotePeers; + private final Map _remotePeers; public static void main(String args[]) { if (args.length < 4) { @@ -165,13 +165,11 @@ public class SAMStreamSend { private int _connectionId; private String _remoteDestination; private InputStream _in; - private boolean _closed; + private volatile boolean _closed; private long _started; private long _totalSent; - public Sender() { - _closed = false; - } + public Sender() {} public boolean openConnection() { FileInputStream fin = null; diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java index 666b7116d8..0e38ed0c42 100644 --- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java +++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java @@ -20,21 +20,21 @@ import net.i2p.util.Log; * */ public class SAMStreamSink { - private I2PAppContext _context; - private Log _log; - private String _samHost; - private String _samPort; - private String _destFile; - private String _sinkDir; - private String _conOptions; + private final I2PAppContext _context; + private final Log _log; + private final String _samHost; + private final String _samPort; + private final String _destFile; + private final String _sinkDir; + private final String _conOptions; private Socket _samSocket; private OutputStream _samOut; private InputStream _samIn; private SAMReader _reader; //private boolean _dead; - private SAMEventHandler _eventHandler; + private final SAMEventHandler _eventHandler; /** Connection id (Integer) to peer (Flooder) */ - private Map _remotePeers; + private final Map _remotePeers; public static void main(String args[]) { if (args.length < 4) { @@ -200,12 +200,12 @@ public class SAMStreamSink { } private class Sink { - private int _connectionId; - private String _remoteDestination; - private boolean _closed; - private long _started; + private final int _connectionId; + private final String _remoteDestination; + private volatile boolean _closed; + private final long _started; private long _lastReceivedOn; - private OutputStream _out; + private final OutputStream _out; public Sink(int conId, String remDest) throws IOException { _connectionId = conId; @@ -222,6 +222,7 @@ public class SAMStreamSink { File out = File.createTempFile("sink", ".dat", sinkDir); _out = new FileOutputStream(out); + _started = _context.clock().now(); } public int getConnectionId() { return _connectionId; }