diff --git a/htroot/js/WatchCrawler.js b/htroot/js/WatchCrawler.js index 829cb431a..fb27c169f 100644 --- a/htroot/js/WatchCrawler.js +++ b/htroot/js/WatchCrawler.js @@ -1,22 +1,22 @@ DELETE_STRING="delete" var statusRPC; -var indexingQueueRPC; +var queuesRPC; function requestStatus(){ statusRPC=createRequestObject() statusRPC.open('get', '/xml/status_p.xml'); statusRPC.onreadystatechange = handleStatus; statusRPC.send(null) } -function requestIndexingQueue(){ - indexingQueueRPC=createRequestObject() - indexingQueueRPC.open('get', '/xml/queues/indexing_p.xml'); - indexingQueueRPC.onreadystatechange = handleIndexingQueue; - indexingQueueRPC.send(null); +function requestQueues(){ + queuesRPC=createRequestObject() + queuesRPC.open('get', '/xml/queues_p.xml'); + queuesRPC.onreadystatechange = handleQueues; + queuesRPC.send(null); } window.setInterval("requestStatus()", 5000); -window.setInterval("requestIndexingQueue()", 5000); +window.setInterval("requestQueues()", 5000); function handleStatus(){ @@ -41,14 +41,15 @@ function handleStatus(){ } -function handleIndexingQueue(){ - if(indexingQueueRPC.readyState != 4){ +function handleQueues(){ + if(queuesRPC.readyState != 4){ return; } - var indexingQueueResponse = indexingQueueRPC.responseXML; + var queuesResponse = queuesRPC.responseXML; indexingTable=document.getElementById("indexingTable"); - if(indexingQueueResponse != null){ - entries=indexingQueueResponse.getElementsByTagName("entry"); + xml=getFirstChild(queuesResponse); + if(queuesResponse != null){ + entries=getFirstChild(xml, "indexingqueue").getElementsByTagName("entry"); } //skip the Tableheade @@ -98,6 +99,9 @@ function getValue(element){ return ""; } function getFirstChild(element, childname){ + if(childname==null){ + childname=""; + } if(element == null){ return null; } @@ -111,6 +115,9 @@ function getFirstChild(element, childname){ return null; } function getNextSibling(element, childname){ + if(childname==null){ + childname=""; + } if(element == null){ return null; } diff --git a/htroot/xml/queues/indexing_p.java b/htroot/xml/queues/indexing_p.java deleted file mode 100644 index 1f6309b64..000000000 --- a/htroot/xml/queues/indexing_p.java +++ /dev/null @@ -1,137 +0,0 @@ -// /xml.queues/indexing_p.java -// ------------------------------- -// part of the AnomicHTTPD caching proxy -// (C) by Michael Peter Christen; mc@anomic.de -// first published on http://www.anomic.de -// Frankfurt, Germany, 2004, 2005 -// last major change: 28.10.2005 -// this file is contributed by Alexander Schier -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// Using this software in any meaning (reading, learning, copying, compiling, -// running) means that you agree that the Author(s) is (are) not responsible -// for cost, loss of data or any harm that may be caused directly or indirectly -// by usage of this softare or this documentation. The usage of this software -// is on your own risk. The installation and usage (starting/running) of this -// software may allow other people or application to access your computer and -// any attached devices and is highly dependent on the configuration of the -// software which must be done by the user of the software; the author(s) is -// (are) also not responsible for proper configuration and usage of the -// software, even if provoked by documentation provided together with -// the software. -// -// Any changes to this file according to the GPL as documented in the file -// gpl.txt aside this file in the shipment you received can be done to the -// lines that follows this copyright notice here, but changes must not be -// done inside the copyright notive above. A re-distribution must contain -// the intact and unchanged copyright notice. -// Contributions and changes to the program code must be marked as such. - -// You must compile this file with -// javac -classpath .:../classes IndexCreate_p.java -// if the shell's current path is HTROOT - -//package xml.queues; -package xml.queues; -import java.util.ArrayList; -import java.util.Date; -import java.text.SimpleDateFormat; -import java.util.Locale; -import java.io.IOException; - -import de.anomic.data.wikiCode; -import de.anomic.http.httpHeader; -import de.anomic.plasma.plasmaSwitchboard; -import de.anomic.plasma.plasmaSwitchboardQueue; -import de.anomic.server.serverObjects; -import de.anomic.server.serverSwitch; -import de.anomic.yacy.yacyCore; -import de.anomic.yacy.yacySeed; - -public class indexing_p { - - private static SimpleDateFormat dayFormatter = new SimpleDateFormat("yyyy/MM/dd", Locale.US); - private static String daydate(Date date) { - if (date == null) return ""; - return dayFormatter.format(date); - } - - public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { - // return variable that accumulates replacements - plasmaSwitchboard switchboard = (plasmaSwitchboard) env; - //wikiCode wikiTransformer = new wikiCode(switchboard); - serverObjects prop = new serverObjects(); - prop.put("rejected", 0); - //int showRejectedCount = 10; - - yacySeed initiator; - - if ((switchboard.sbQueue.size() == 0) && (switchboard.indexingTasksInProcess.size() == 0)) { - prop.put("list", 0); //is empty - } else { - plasmaSwitchboardQueue.Entry pcentry; - int inProcessCount = 0; - long totalSize = 0; - int i=0; //counter - try { - ArrayList entryList = new ArrayList(); - - // getting all entries that are currently in process - synchronized (switchboard.indexingTasksInProcess) { - inProcessCount = switchboard.indexingTasksInProcess.size(); - entryList.addAll(switchboard.indexingTasksInProcess.values()); - } - - // getting all enqueued entries - if ((switchboard.sbQueue.size() > 0)) { - entryList.addAll(switchboard.sbQueue.list(0)); - } - int size=10; - if (post!= null) size = post.getInt("num", 10); - - if(size>entryList.size()){ - size=entryList.size(); - } - - for (i = 0; i < size; i++) { - boolean inProcess = i < inProcessCount; - pcentry = (plasmaSwitchboardQueue.Entry) entryList.get(i); - long entrySize = pcentry.size(); - totalSize += entrySize; - if ((pcentry != null)&&(pcentry.url() != null)) { - initiator = yacyCore.seedDB.getConnected(pcentry.initiator()); - prop.put("list_"+i+"_initiator", ((initiator == null) ? "proxy" : wikiCode.replaceHTML(initiator.getName()))); - prop.put("list_"+i+"_depth", pcentry.depth()); - prop.put("list_"+i+"_modified", (pcentry.responseHeader() == null) ? "" : daydate(pcentry.responseHeader().lastModified())); - prop.put("list_"+i+"_anchor", (pcentry.anchorName()==null)?"":wikiCode.replaceHTML(pcentry.anchorName())); - prop.put("list_"+i+"_url", wikiCode.replaceHTML(pcentry.normalizedURLString())); - prop.put("list_"+i+"_size", entrySize); - prop.put("list_"+i+"_inProcess", (inProcess)?1:0); - prop.put("list_"+i+"_hash", pcentry.urlHash()); - } - } - prop.put("list", i); - } catch (IOException e) {} - } - - // return rewrite properties - return prop; - } - -} - - - diff --git a/htroot/xml/queues/indexing_p.xml b/htroot/xml/queues/indexing_p.xml deleted file mode 100644 index 6faedfa88..000000000 --- a/htroot/xml/queues/indexing_p.xml +++ /dev/null @@ -1,16 +0,0 @@ - - -#{list}# - - #[initiator]# - #[depth]# - #[modified]# - #[anchor]# - #[url]# - #[size]# - #[hash]# - #(inProcess)#false::true#(/inProcess)# - -#{/list}# - - diff --git a/htroot/xml/queues_p.java b/htroot/xml/queues_p.java new file mode 100644 index 000000000..b3395ae07 --- /dev/null +++ b/htroot/xml/queues_p.java @@ -0,0 +1,224 @@ +// /xml.queues/indexing_p.java +// ------------------------------- +// part of the AnomicHTTPD caching proxy +// (C) by Michael Peter Christen; mc@anomic.de +// first published on http://www.anomic.de +// Frankfurt, Germany, 2004, 2005 +// last major change: 28.10.2005 +// this file is contributed by Alexander Schier +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Using this software in any meaning (reading, learning, copying, compiling, +// running) means that you agree that the Author(s) is (are) not responsible +// for cost, loss of data or any harm that may be caused directly or indirectly +// by usage of this softare or this documentation. The usage of this software +// is on your own risk. The installation and usage (starting/running) of this +// software may allow other people or application to access your computer and +// any attached devices and is highly dependent on the configuration of the +// software which must be done by the user of the software; the author(s) is +// (are) also not responsible for proper configuration and usage of the +// software, even if provoked by documentation provided together with +// the software. +// +// Any changes to this file according to the GPL as documented in the file +// gpl.txt aside this file in the shipment you received can be done to the +// lines that follows this copyright notice here, but changes must not be +// done inside the copyright notive above. A re-distribution must contain +// the intact and unchanged copyright notice. +// Contributions and changes to the program code must be marked as such. + +// You must compile this file with +// javac -classpath .:../classes IndexCreate_p.java +// if the shell's current path is HTROOT + +//package xml.queues; +package xml; +import java.util.ArrayList; +import java.util.Date; +import java.text.SimpleDateFormat; +import java.util.Locale; +import java.io.IOException; + +import de.anomic.data.wikiCode; +import de.anomic.http.httpHeader; +import de.anomic.plasma.plasmaCrawlLoaderMessage; +import de.anomic.plasma.plasmaCrawlNURL; +import de.anomic.plasma.plasmaCrawlProfile; +import de.anomic.plasma.plasmaCrawlWorker; +import de.anomic.plasma.plasmaSwitchboard; +import de.anomic.plasma.plasmaSwitchboardQueue; +import de.anomic.server.serverObjects; +import de.anomic.server.serverSwitch; +import de.anomic.yacy.yacyCore; +import de.anomic.yacy.yacySeed; + +public class queues_p { + + private static SimpleDateFormat dayFormatter = new SimpleDateFormat("yyyy/MM/dd", Locale.US); + private static String daydate(Date date) { + if (date == null) return ""; + return dayFormatter.format(date); + } + + public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { + // return variable that accumulates replacements + plasmaSwitchboard switchboard = (plasmaSwitchboard) env; + //wikiCode wikiTransformer = new wikiCode(switchboard); + serverObjects prop = new serverObjects(); + prop.put("rejected", 0); + //int showRejectedCount = 10; + + yacySeed initiator; + + //indexing queue + if ((switchboard.sbQueue.size() == 0) && (switchboard.indexingTasksInProcess.size() == 0)) { + prop.put("list", 0); //is empty + } else { + plasmaSwitchboardQueue.Entry pcentry; + int inProcessCount = 0; + long totalSize = 0; + int i=0; //counter + try { + ArrayList entryList = new ArrayList(); + + // getting all entries that are currently in process + synchronized (switchboard.indexingTasksInProcess) { + inProcessCount = switchboard.indexingTasksInProcess.size(); + entryList.addAll(switchboard.indexingTasksInProcess.values()); + } + + // getting all enqueued entries + if ((switchboard.sbQueue.size() > 0)) { + entryList.addAll(switchboard.sbQueue.list(0)); + } + int size=10; + if (post!= null) size = post.getInt("num", 10); + + if(size>entryList.size()){ + size=entryList.size(); + } + + for (i = 0; i < size; i++) { + boolean inProcess = i < inProcessCount; + pcentry = (plasmaSwitchboardQueue.Entry) entryList.get(i); + long entrySize = pcentry.size(); + totalSize += entrySize; + if ((pcentry != null)&&(pcentry.url() != null)) { + initiator = yacyCore.seedDB.getConnected(pcentry.initiator()); + prop.put("list-indexing_"+i+"_initiator", ((initiator == null) ? "proxy" : wikiCode.replaceHTML(initiator.getName()))); + prop.put("list-indexing_"+i+"_depth", pcentry.depth()); + prop.put("list-indexing_"+i+"_modified", (pcentry.responseHeader() == null) ? "" : daydate(pcentry.responseHeader().lastModified())); + prop.put("list-indexing_"+i+"_anchor", (pcentry.anchorName()==null)?"":wikiCode.replaceHTML(pcentry.anchorName())); + prop.put("list-indexing_"+i+"_url", wikiCode.replaceHTML(pcentry.normalizedURLString())); + prop.put("list-indexing_"+i+"_size", entrySize); + prop.put("list-indexing_"+i+"_inProcess", (inProcess)?1:0); + prop.put("list-indexing_"+i+"_hash", pcentry.urlHash()); + } + } + prop.put("list-indexing", i); + } catch (IOException e) {} + } + + //loader queue + if (switchboard.cacheLoader.size() == 0) { + prop.put("list-loader", 0); + } else { + ThreadGroup loaderThreads = switchboard.cacheLoader.threadStatus(); + int threadCount = loaderThreads.activeCount(); + Thread[] threadList = new Thread[threadCount*2]; + threadCount = loaderThreads.enumerate(threadList); + int size=10; + if(threadCount + +#{list-indexing}# + + #[initiator]# + #[depth]# + #[modified]# + #[anchor]# + #[url]# + #[size]# + #[hash]# + #(inProcess)#false::true#(/inProcess)# + +#{/list-indexing}# + + +#{list-loader}# + + #[initiator]# + #[depth]# + #[url]# + +#{/list-loader}# + + +#{list-local}# + + #[initiator]# + #[depth]# + #[modified]# + #[anchor]# + #[url]# + #[hash]# + #(inProcess)#false::true#(/inProcess)# + +#{/list-local}# + + +#{list-remote}# + + #[profile]# + #[depth]# + #[modified]# + #[anchor]# + #[url]# + #(inProcess)#false::true#(/inProcess)# + +#{/list-remote}# + +