forked from I2P_Developers/i2p.i2p
cCVS: ----------------------------------------------------------------------
This commit is contained in:
@ -231,8 +231,8 @@ public class PeerCoordinator implements PeerListener
|
|||||||
synchronized(peers)
|
synchronized(peers)
|
||||||
{
|
{
|
||||||
Peer old = peerIDInList(peer.getPeerID(), peers);
|
Peer old = peerIDInList(peer.getPeerID(), peers);
|
||||||
if ( (old != null) && (old.getInactiveTime() > 2*60*1000) ) {
|
if ( (old != null) && (old.getInactiveTime() > 4*60*1000) ) {
|
||||||
// idle for 2 minutes, kill the old con
|
// idle for 4 minutes, kill the old con (64KB/4min = 273B/sec minimum for one block)
|
||||||
if (_log.shouldLog(Log.WARN))
|
if (_log.shouldLog(Log.WARN))
|
||||||
_log.warn("Remomving old peer: " + peer + ": " + old + ", inactive for " + old.getInactiveTime());
|
_log.warn("Remomving old peer: " + peer + ": " + old + ", inactive for " + old.getInactiveTime());
|
||||||
peers.remove(old);
|
peers.remove(old);
|
||||||
@ -448,13 +448,13 @@ public class PeerCoordinator implements PeerListener
|
|||||||
}
|
}
|
||||||
if (piece == null) {
|
if (piece == null) {
|
||||||
if (_log.shouldLog(Log.WARN))
|
if (_log.shouldLog(Log.WARN))
|
||||||
_log.warn("nothing to even rerequest from " + peer + ": requested = " + requested
|
_log.warn("nothing to even rerequest from " + peer + ": requested = " + requested);
|
||||||
+ " wanted = " + wantedPieces + " peerHas = " + havePieces);
|
// _log.warn("nothing to even rerequest from " + peer + ": requested = " + requested
|
||||||
|
// + " wanted = " + wantedPieces + " peerHas = " + havePieces);
|
||||||
return -1; //If we still can't find a piece we want, so be it.
|
return -1; //If we still can't find a piece we want, so be it.
|
||||||
} else {
|
} else {
|
||||||
// Should be a lot smarter here - limit # of parallel attempts and
|
// Should be a lot smarter here - limit # of parallel attempts and
|
||||||
// share data rather than starting from 0 with each peer.
|
// share blocks rather than starting from 0 with each peer.
|
||||||
// And could share-as-we-go too.
|
|
||||||
// This is where the flaws of the snark data model are really exposed.
|
// This is where the flaws of the snark data model are really exposed.
|
||||||
// Could also randomize within the duplicate set rather than strict rarest-first
|
// Could also randomize within the duplicate set rather than strict rarest-first
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
if (_log.shouldLog(Log.DEBUG))
|
||||||
@ -654,13 +654,15 @@ public class PeerCoordinator implements PeerListener
|
|||||||
if (savedRequest == null ||
|
if (savedRequest == null ||
|
||||||
req.off > savedRequest.off ||
|
req.off > savedRequest.off ||
|
||||||
System.currentTimeMillis() > savedRequestTime + (15 * 60 * 1000)) {
|
System.currentTimeMillis() > savedRequestTime + (15 * 60 * 1000)) {
|
||||||
|
if (savedRequest == null || (req.piece != savedRequest.piece && req.off != savedRequest.off)) {
|
||||||
|
if (_log.shouldLog(Log.DEBUG)) {
|
||||||
|
_log.debug(" Saving orphaned partial piece " + req);
|
||||||
|
if (savedRequest != null)
|
||||||
|
_log.debug(" (Discarding previously saved orphan) " + savedRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
savedRequest = req;
|
savedRequest = req;
|
||||||
savedRequestTime = System.currentTimeMillis();
|
savedRequestTime = System.currentTimeMillis();
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
|
||||||
_log.debug(" Saving orphaned partial piece " + req);
|
|
||||||
if (savedRequest != null)
|
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
|
||||||
_log.debug(" (Discarding previously saved orphan) " + savedRequest);
|
|
||||||
} else {
|
} else {
|
||||||
if (req.piece != savedRequest.piece)
|
if (req.piece != savedRequest.piece)
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
if (_log.shouldLog(Log.DEBUG))
|
||||||
|
@ -556,7 +556,7 @@ class PeerState
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void keepAlive()
|
void keepAlive()
|
||||||
{
|
{
|
||||||
out.sendAlive();
|
out.sendAlive();
|
||||||
}
|
}
|
||||||
|
@ -321,8 +321,10 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
else
|
else
|
||||||
statusString = "Complete";
|
statusString = "Complete";
|
||||||
} else {
|
} else {
|
||||||
if (isRunning)
|
if (isRunning && curPeers > 0)
|
||||||
statusString = "OK (" + curPeers + "/" + knownPeers + " peers)";
|
statusString = "OK (" + curPeers + "/" + knownPeers + " peers)";
|
||||||
|
else if (isRunning)
|
||||||
|
statusString = "No Peers (0/" + knownPeers + ")";
|
||||||
else
|
else
|
||||||
statusString = "Stopped";
|
statusString = "Stopped";
|
||||||
}
|
}
|
||||||
@ -341,22 +343,23 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
out.write("</a>");
|
out.write("</a>");
|
||||||
out.write("</td>\n\t");
|
out.write("</td>\n\t");
|
||||||
|
|
||||||
out.write("<td valign=\"top\" align=\"left\" class=\"snarkTorrentDownloaded " + rowClass + "\">");
|
out.write("<td valign=\"top\" align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">");
|
||||||
if (remaining > 0) {
|
if(isRunning && remainingSeconds > 0)
|
||||||
out.write(formatSize(total-remaining) + "/" + formatSize(total)); // 18MB/3GB
|
out.write(DataHelper.formatDuration(remainingSeconds*1000)); // (eta 6h)
|
||||||
if(isRunning && remainingSeconds > 0)
|
|
||||||
out.write(" (ETA " + DataHelper.formatDuration(remainingSeconds*1000) + ")"); // (eta 6h)
|
|
||||||
} else {
|
|
||||||
out.write(formatSize(total)); // 3GB
|
|
||||||
}
|
|
||||||
out.write("</td>\n\t");
|
out.write("</td>\n\t");
|
||||||
out.write("<td valign=\"top\" align=\"left\" class=\"snarkTorrentUploaded " + rowClass
|
out.write("<td valign=\"top\" align=\"right\" class=\"snarkTorrentDownloaded " + rowClass + "\">");
|
||||||
|
if (remaining > 0)
|
||||||
|
out.write(formatSize(total-remaining) + "/" + formatSize(total)); // 18MB/3GB
|
||||||
|
else
|
||||||
|
out.write(formatSize(total)); // 3GB
|
||||||
|
out.write("</td>\n\t");
|
||||||
|
out.write("<td valign=\"top\" align=\"right\" class=\"snarkTorrentUploaded " + rowClass
|
||||||
+ "\">" + formatSize(uploaded) + "</td>\n\t");
|
+ "\">" + formatSize(uploaded) + "</td>\n\t");
|
||||||
out.write("<td valign=\"top\" align=\"left\" class=\"snarkTorrentRate\">");
|
out.write("<td valign=\"top\" align=\"right\" class=\"snarkTorrentRate\">");
|
||||||
if(isRunning && remaining > 0)
|
if(isRunning && remaining > 0)
|
||||||
out.write(formatSize(downBps) + "ps");
|
out.write(formatSize(downBps) + "ps");
|
||||||
out.write("</td>\n\t");
|
out.write("</td>\n\t");
|
||||||
out.write("<td valign=\"top\" align=\"left\" class=\"snarkTorrentRate\">");
|
out.write("<td valign=\"top\" align=\"right\" class=\"snarkTorrentRate\">");
|
||||||
if(isRunning)
|
if(isRunning)
|
||||||
out.write(formatSize(upBps) + "ps");
|
out.write(formatSize(upBps) + "ps");
|
||||||
out.write("</td>\n\t");
|
out.write("</td>\n\t");
|
||||||
@ -550,7 +553,10 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
"}\n" +
|
"}\n" +
|
||||||
"th {\n" +
|
"th {\n" +
|
||||||
" background-color: #C7D5D5;\n" +
|
" background-color: #C7D5D5;\n" +
|
||||||
" margin: 0px 0px 0px 0px;\n" +
|
" padding: 0px 7px 0px 3px;\n" +
|
||||||
|
"}\n" +
|
||||||
|
"td {\n" +
|
||||||
|
" padding: 0px 7px 0px 3px;\n" +
|
||||||
"}\n" +
|
"}\n" +
|
||||||
".snarkTorrentEven {\n" +
|
".snarkTorrentEven {\n" +
|
||||||
" background-color: #E7E7E7;\n" +
|
" background-color: #E7E7E7;\n" +
|
||||||
@ -578,20 +584,21 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
"<body>\n";
|
"<body>\n";
|
||||||
|
|
||||||
|
|
||||||
private static final String TABLE_HEADER = "<table border=\"0\" class=\"snarkTorrents\" width=\"100%\">\n" +
|
private static final String TABLE_HEADER = "<table border=\"0\" class=\"snarkTorrents\" width=\"100%\" cellpadding=\"0 10px\">\n" +
|
||||||
"<thead>\n" +
|
"<thead>\n" +
|
||||||
"<tr><th align=\"left\" valign=\"top\">Status</th>\n" +
|
"<tr><th align=\"left\" valign=\"top\">Status</th>\n" +
|
||||||
" <th align=\"left\" valign=\"top\">Torrent</th>\n" +
|
" <th align=\"left\" valign=\"top\">Torrent</th>\n" +
|
||||||
" <th align=\"left\" valign=\"top\">Downloaded</th>\n" +
|
" <th align=\"right\" valign=\"top\">ETA</th>\n" +
|
||||||
" <th align=\"left\" valign=\"top\">Uploaded</th>\n" +
|
" <th align=\"right\" valign=\"top\">Downloaded</th>\n" +
|
||||||
" <th align=\"left\" valign=\"top\">Down Rate</th>\n" +
|
" <th align=\"right\" valign=\"top\">Uploaded</th>\n" +
|
||||||
" <th align=\"left\" valign=\"top\">Up Rate</th>\n" +
|
" <th align=\"right\" valign=\"top\">Down Rate</th>\n" +
|
||||||
|
" <th align=\"right\" valign=\"top\">Up Rate</th>\n" +
|
||||||
" <th> </th></tr>\n" +
|
" <th> </th></tr>\n" +
|
||||||
"</thead>\n";
|
"</thead>\n";
|
||||||
|
|
||||||
private static final String TABLE_EMPTY = "<tr class=\"snarkTorrentEven\">" +
|
private static final String TABLE_EMPTY = "<tr class=\"snarkTorrentEven\">" +
|
||||||
"<td class=\"snarkTorrentEven\" align=\"left\"" +
|
"<td class=\"snarkTorrentEven\" align=\"left\"" +
|
||||||
" valign=\"top\" colspan=\"5\">No torrents</td></tr>\n";
|
" valign=\"top\" colspan=\"8\">No torrents</td></tr>\n";
|
||||||
|
|
||||||
private static final String TABLE_FOOTER = "</table>\n";
|
private static final String TABLE_FOOTER = "</table>\n";
|
||||||
|
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
$Id: history.txt,v 1.510 2006-09-04 03:26:22 zzz Exp $
|
$Id: history.txt,v 1.511 2006-09-06 01:32:54 zzz Exp $
|
||||||
|
|
||||||
|
2006-09-07 zzz
|
||||||
|
* i2psnark: Increase output timeout from 2 min to 4 min
|
||||||
|
* i2psnark: Orphan debug msg cleanup
|
||||||
|
* i2psnark: More web rate report cleanup
|
||||||
|
|
||||||
2006-09-05 zzz
|
2006-09-05 zzz
|
||||||
* i2psnark: Implement basic partial-piece saves across connections
|
* i2psnark: Implement basic partial-piece saves across connections
|
||||||
|
@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class RouterVersion {
|
public class RouterVersion {
|
||||||
public final static String ID = "$Revision: 1.450 $ $Date: 2006-09-04 03:26:21 $";
|
public final static String ID = "$Revision: 1.451 $ $Date: 2006-09-06 01:32:53 $";
|
||||||
public final static String VERSION = "0.6.1.24";
|
public final static String VERSION = "0.6.1.24";
|
||||||
public final static long BUILD = 9;
|
public final static long BUILD = 10;
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
||||||
System.out.println("Router ID: " + RouterVersion.ID);
|
System.out.println("Router ID: " + RouterVersion.ID);
|
||||||
|
Reference in New Issue
Block a user