Changeset 4291450


Ignore:
Timestamp:
Nov 26, 2015 11:30:18 PM (5 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
31ace20
Parents:
6373c8a
Message:

make method private
fix timeout message
add client sink pinger

Location:
apps/sam/java/src/net/i2p/sam
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • apps/sam/java/src/net/i2p/sam/SAMHandler.java

    r6373c8a r4291450  
    103103    }
    104104   
    105     static public void writeBytes(ByteBuffer data, SocketChannel out) throws IOException {
     105    /**
     106     *  Caller must synch
     107     */
     108    private static void writeBytes(ByteBuffer data, SocketChannel out) throws IOException {
    106109        while (data.hasRemaining()) out.write(data);           
    107110        out.socket().getOutputStream().flush();
     
    133136    }
    134137
    135     /** @return success */
     138    /**
     139     * Unsynchronized, use with caution
     140     * @return success
     141     */
    136142    public static boolean writeString(String str, SocketChannel out)
    137143    {
  • apps/sam/java/src/net/i2p/sam/SAMv3Handler.java

    r6373c8a r4291450  
    316316                                                                if (_log.shouldWarn())
    317317                                                                        _log.warn("2nd timeout");
    318                                                                 writeString("XXX STATUS RESULT=I2P_ERROR MESSAGE=\"command timeout, bye\"\n");
     318                                                                writeString("SESSION STATUS RESULT=I2P_ERROR MESSAGE=\"command timeout, bye\"\n");
    319319                                                                break;
    320320                                                        } else {
  • apps/sam/java/src/net/i2p/sam/client/SAMStreamSink.java

    r6373c8a r4291450  
    1616import net.i2p.data.Base32;
    1717import net.i2p.data.DataHelper;
     18import net.i2p.util.I2PAppThread;
    1819import net.i2p.util.Log;
    1920import net.i2p.util.VersionComparator;
     
    3637    private SAMReader _reader, _reader2;
    3738    private boolean _isV3;
     39    private boolean _isV32;
    3840    private String _v3ID;
    3941    //private boolean _dead;
     
    128130            if (_log.shouldLog(Log.DEBUG))
    129131                _log.debug("Handshake complete.  we are " + ourDest);
     132            if (_isV32) {
     133                _log.debug("Starting pinger");
     134                Thread t = new Pinger(out);
     135                t.start();
     136            }
    130137            if (_isV3 && mode != V1DG && mode != V1RAW) {
    131138                Socket sock2 = connect(isSSL);
     
    145152        } catch (IOException e) {
    146153            _log.error("Unable to connect to SAM at " + _samHost + ":" + _samPort, e);
     154        }
     155    }
     156
     157    private static class Pinger extends I2PAppThread {
     158        private final OutputStream _out;
     159
     160        public Pinger(OutputStream out) {
     161            super("SAM Sink Pinger");
     162            setDaemon(true);
     163            _out = out;
     164        }
     165
     166        public void run() {
     167            while (true) {
     168                try {
     169                    Thread.sleep(127*1000);
     170                    synchronized(_out) {
     171                        _out.write(DataHelper.getASCII("PING " + System.currentTimeMillis() + '\n'));
     172                        _out.flush();
     173                    }
     174                } catch (InterruptedException ie) {
     175                    break;
     176                } catch (IOException ioe) {
     177                    break;
     178                }
     179            }
    147180        }
    148181    }
     
    354387                String dest;
    355388                if (_isV3) {
     389                    _isV32 = VersionComparator.comp(hisVersion, "3.2") >= 0;
    356390                    // we use the filename as the name in sam.keys
    357391                    // and read it in ourselves
Note: See TracChangeset for help on using the changeset viewer.