Changeset 49cc6b5


Ignore:
Timestamp:
Apr 13, 2013 12:12:22 PM (8 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
21e47e6
Parents:
10a42c8
Message:
  • i2psnark:
    • Limit number of torrents displayed; add previous/next page buttons
    • Only register one instance with UpdateManager?
    • New icons from famfam/silk, same license
Files:
6 added
2 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java

    r10a42c8 r49cc6b5  
    162162        _monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor", true);
    163163        _monitor.start();
    164         // delay until UpdateManager is there
    165         _context.simpleScheduler().addEvent(new Register(), 4*60*1000);
     164        // only if default instance
     165        if ("i2psnark".equals(_contextName))
     166            // delay until UpdateManager is there
     167            _context.simpleScheduler().addEvent(new Register(), 4*60*1000);
    166168        // Not required, Jetty has a shutdown hook
    167169        //_context.addShutdownTask(new SnarkManagerShutdown());
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    r10a42c8 r49cc6b5  
    6262    private static final String DEFAULT_NAME = "i2psnark";
    6363    public static final String PROP_CONFIG_FILE = "i2psnark.configFile";
     64    private static final int PAGE_SIZE = 20;
    6465 
    6566    public I2PSnarkServlet() {
     
    164165
    165166        String peerParam = req.getParameter("p");
     167        String stParam = req.getParameter("st");
    166168        String peerString;
    167169        if (peerParam == null || (!_manager.util().connected()) ||
     
    170172        } else {
    171173            peerString = "?p=" + peerParam;
     174        }
     175        if (stParam != null && !stParam.equals("0")) {
     176            if (peerString.length() > 0)
     177                peerString += "&amp;st=" + stParam;
     178            else
     179                peerString =  "?st="+ stParam;
    172180        }
    173181
     
    352360        final long stats[] = {0,0,0,0,0,0};
    353361        String peerParam = req.getParameter("p");
     362        String stParam = req.getParameter("st");
    354363
    355364        List<Snark> snarks = getSortedSnarks(req);
     
    361370            if (peerParam != null)
    362371                out.write("<input type=\"hidden\" name=\"p\" value=\"" + peerParam + "\" >\n");
     372            // ...or st setting
     373            if (stParam != null)
     374                out.write("<input type=\"hidden\" name=\"st\" value=\"" + stParam + "\" >\n");
    363375        }
    364376        out.write(TABLE_HEADER);
     
    371383            out.write(" <a href=\"" + _contextPath + '/');
    372384            if (peerParam != null) {
     385                if (stParam != null) {
     386                    out.write("?st=");
     387                    out.write(stParam);
     388                }
    373389                out.write("\">");
    374390                out.write("<img border=\"0\" src=\"" + _imgPath + "hidepeers.png\" title=\"");
     
    378394                out.write("\">");
    379395            } else {
    380                 out.write("?p=1\">");
     396                out.write("?p=1");
     397                if (stParam != null) {
     398                    out.write("&amp;st=");
     399                    out.write(stParam);
     400                }
     401                out.write("\">");
    381402                out.write("<img border=\"0\" src=\"" + _imgPath + "showpeers.png\" title=\"");
    382403                out.write(_("Show Peers"));
     
    479500        String uri = _contextPath + '/';
    480501        boolean showDebug = "2".equals(peerParam);
     502
     503        int start = 0;
     504        if (stParam != null) {
     505            try {
     506                start = Math.max(0, Math.min(snarks.size() - 1, Integer.parseInt(stParam)));
     507            } catch (NumberFormatException nfe) {}
     508        }
    481509        for (int i = 0; i < snarks.size(); i++) {
    482510            Snark snark = (Snark)snarks.get(i);
    483511            boolean showPeers = showDebug || "1".equals(peerParam) || Base64.encode(snark.getInfoHash()).equals(peerParam);
    484             displaySnark(out, snark, uri, i, stats, showPeers, isDegraded, noThinsp, showDebug);
     512            boolean hide = i < start || i >= start + PAGE_SIZE;
     513            displaySnark(out, snark, uri, i, stats, showPeers, isDegraded, noThinsp, showDebug, hide);
    485514        }
    486515
     
    494523            out.write("<tfoot><tr>\n" +
    495524                      "    <th align=\"left\" colspan=\"6\">");
     525            if (start > 0) {
     526                int prev = Math.max(0, start - PAGE_SIZE);
     527                out.write("&nbsp;<a href=\"" + _contextPath +  "?st=" + prev);
     528                if (peerParam != null)
     529                    out.write("&p=" + peerParam);
     530                out.write("\">" +
     531                          "<img alt=\"" + _("Prev") + "\" title=\"" + _("Previous page") + "\" border=\"0\" src=\"" +
     532                          _imgPath + "control_rewind_blue.png\">" +
     533                          "</a>&nbsp;");
     534            }
     535            if (start + PAGE_SIZE < snarks.size()) {
     536                int next = start + PAGE_SIZE;
     537                out.write("&nbsp;<a href=\"" + _contextPath +  "?st=" + next);
     538                if (peerParam != null)
     539                    out.write("&p=" + peerParam);
     540                out.write("\">" +
     541                          "<img alt=\"" + _("Next") + "\" title=\"" + _("Next page") + "\" border=\"0\" src=\"" +
     542                          _imgPath + "control_fastforward_blue.png\">" +
     543                          "</a>&nbsp;");
     544            }
     545            out.write("&nbsp;");
    496546            out.write(_("Totals"));
    497547            out.write(":&nbsp;");
     
    10161066    private static final int MAX_DISPLAYED_FILENAME_LENGTH = 50;
    10171067    private static final int MAX_DISPLAYED_ERROR_LENGTH = 43;
     1068
     1069    /**
     1070     *  Display one snark (one line in table, unless showPeers is true)
     1071     *
     1072     *  @param stats in/out param (totals)
     1073     *  @param statsOnly if true, output nothing, update stats only
     1074     */
    10181075    private void displaySnark(PrintWriter out, Snark snark, String uri, int row, long stats[], boolean showPeers,
    1019                               boolean isDegraded, boolean noThinsp, boolean showDebug) throws IOException {
     1076                              boolean isDegraded, boolean noThinsp, boolean showDebug, boolean statsOnly) throws IOException {
     1077        // stats
     1078        long uploaded = snark.getUploaded();
     1079        stats[0] += snark.getDownloaded();
     1080        stats[1] += uploaded;
     1081        long downBps = snark.getDownloadRate();
     1082        long upBps = snark.getUploadRate();
     1083        boolean isRunning = !snark.isStopped();
     1084        if (isRunning) {
     1085            stats[2] += downBps;
     1086            stats[3] += upBps;
     1087        }
     1088        int curPeers = snark.getPeerCount();
     1089        stats[4] += curPeers;
     1090        long total = snark.getTotalLength();
     1091        if (total > 0)
     1092            stats[5] += total;
     1093        if (statsOnly)
     1094            return;
     1095
    10201096        String filename = snark.getName();
    10211097        if (snark.getMetaInfo() != null) {
     
    10371113            }
    10381114        }
    1039         long total = snark.getTotalLength();
    10401115        // includes skipped files, -1 for magnet mode
    10411116        long remaining = snark.getRemainingLength();
     
    10461121        if (needed > total)
    10471122            needed = total;
    1048         long downBps = snark.getDownloadRate();
    1049         long upBps = snark.getUploadRate();
    10501123        long remainingSeconds;
    10511124        if (downBps > 0 && needed > 0)
     
    10531126        else
    10541127            remainingSeconds = -1;
    1055         boolean isRunning = !snark.isStopped();
    1056         long uploaded = snark.getUploaded();
    1057         stats[0] += snark.getDownloaded();
    1058         stats[1] += uploaded;
    1059         if (isRunning) {
    1060             stats[2] += downBps;
    1061             stats[3] += upBps;
    1062         }
    1063         stats[5] += total;
    10641128       
    10651129        MetaInfo meta = snark.getMetaInfo();
     
    10691133       
    10701134        String err = snark.getTrackerProblems();
    1071         int curPeers = snark.getPeerCount();
    1072         stats[4] += curPeers;
    10731135        int knownPeers = Math.max(curPeers, snark.getTrackerSeenPeers());
    10741136       
Note: See TracChangeset for help on using the changeset viewer.