001: //plasmaCrawlLoaderMessage.java
002: //------------------------
003: //part of YaCy
004: //(C) by Michael Peter Christen; mc@anomic.de
005: //first published on http://www.anomic.de
006: //Frankfurt, Germany, 2004
007: //last major change: 21.04.2005 by Martin Thelian
008: //
009: //This program is free software; you can redistribute it and/or modify
010: //it under the terms of the GNU General Public License as published by
011: //the Free Software Foundation; either version 2 of the License, or
012: //(at your option) any later version.
013: //
014: //This program is distributed in the hope that it will be useful,
015: //but WITHOUT ANY WARRANTY; without even the implied warranty of
016: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
017: //GNU General Public License for more details.
018: //
019: //You should have received a copy of the GNU General Public License
020: //along with this program; if not, write to the Free Software
021: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
022: //
023: //Using this software in any meaning (reading, learning, copying, compiling,
024: //running) means that you agree that the Author(s) is (are) not responsible
025: //for cost, loss of data or any harm that may be caused directly or indirectly
026: //by usage of this softare or this documentation. The usage of this software
027: //is on your own risk. The installation and usage (starting/running) of this
028: //software may allow other people or application to access your computer and
029: //any attached devices and is highly dependent on the configuration of the
030: //software which must be done by the user of the software; the author(s) is
031: //(are) also not responsible for proper configuration and usage of the
032: //software, even if provoked by documentation provided together with
033: //the software.
034: //
035: //Any changes to this file according to the GPL as documented in the file
036: //gpl.txt aside this file in the shipment you received can be done to the
037: //lines that follows this copyright notice here, but changes must not be
038: //done inside the copyright notive above. A re-distribution must contain
039: //the intact and unchanged copyright notice.
040: //Contributions and changes to the program code must be marked as such.
041:
042: package de.anomic.plasma;
043:
044: import de.anomic.server.serverSemaphore;
045: import de.anomic.yacy.yacyURL;
046:
047: public final class plasmaCrawlLoaderMessage {
048: public final int crawlingPriority;
049:
050: public final yacyURL url;
051: public final String name;
052: public final String referer;
053: public final String initiator;
054: public final int depth;
055: public final plasmaCrawlProfile.entry profile;
056: public final boolean acceptAllContent;
057: public final int timeout;
058: public final boolean keepInMemory;
059:
060: private serverSemaphore resultSync = null;
061: private plasmaHTCache.Entry result;
062: private String errorMessage;
063:
064: // loadParallel(URL url, String referer, String initiator, int depth, plasmaCrawlProfile.entry profile) {
065: public plasmaCrawlLoaderMessage(
066: yacyURL url,
067: String name, // the name of the url, from anchor tag <a>name</a>
068: String referer, String initiator, int depth,
069: plasmaCrawlProfile.entry profile, int crawlingPriority,
070: boolean acceptAllContent, int timeout, boolean keepInMemory) {
071: this .url = url;
072: this .name = name;
073: this .referer = referer;
074: this .initiator = initiator;
075: this .depth = depth;
076: this .profile = profile;
077: this .crawlingPriority = crawlingPriority;
078: this .acceptAllContent = acceptAllContent;
079: this .timeout = timeout;
080: this .keepInMemory = keepInMemory;
081:
082: this .resultSync = new serverSemaphore(0);
083: this .result = null;
084: }
085:
086: public void setError(String errorMessage) {
087: this .errorMessage = errorMessage;
088: }
089:
090: public String getError() {
091: return this .errorMessage;
092: }
093:
094: public void setResult(plasmaHTCache.Entry theResult) {
095: // store the result
096: this .result = theResult;
097:
098: // notify blocking result readers
099: this .resultSync.V();
100: }
101:
102: public plasmaHTCache.Entry waitForResult()
103: throws InterruptedException {
104: plasmaHTCache.Entry theResult = null;
105:
106: this .resultSync.P();
107: /* =====> CRITICAL SECTION <======== */
108:
109: theResult = this .result;
110:
111: /* =====> CRITICAL SECTION <======== */
112: this.resultSync.V();
113:
114: return theResult;
115: }
116: }
|