⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocolstatus.java

📁 nutch0.8源码
💻 JAVA
字号:
/** * Copyright 2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.nutch.protocol;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import java.util.HashMap;import org.apache.hadoop.io.VersionedWritable;import org.apache.hadoop.io.WritableUtils;/** * @author Andrzej Bialecki */public class ProtocolStatus extends VersionedWritable {    private final static byte VERSION = 1;    /** Content was retrieved without errors. */  public static final int SUCCESS              = 1;  /** Content was not retrieved. Any further errors may be indicated in args. */  public static final int FAILED               = 2;    /** This protocol was not found.  Application may attempt to retry later. */  public static final int PROTO_NOT_FOUND      = 10;  /** Resource is gone. */  public static final int GONE                 = 11;  /** Resource has moved permanently. New url should be found in args. */  public static final int MOVED                = 12;  /** Resource has moved temporarily. New url should be found in args. */  public static final int TEMP_MOVED           = 13;  /** Resource was not found. */  public static final int NOTFOUND            = 14;  /** Temporary failure. Application may retry immediately. */  public static final int RETRY                = 15;  /** Unspecified exception occured. Further information may be provided in args. */  public static final int EXCEPTION            = 16;  /** Access denied - authorization required, but missing/incorrect. */  public static final int ACCESS_DENIED        = 17;  /** Access denied by robots.txt rules. */  public static final int ROBOTS_DENIED        = 18;  /** Too many redirects. */  public static final int REDIR_EXCEEDED       = 19;  /** Not fetching. */  public static final int NOTFETCHING          = 20;  /** Unchanged since the last fetch. */  public static final int NOTMODIFIED          = 21;  /** Request was refused by protocol plugins, because it would block.   * The expected number of milliseconds to wait before retry may be provided   * in args. */  public static final int WOULDBLOCK           = 22;  /** Thread was blocked http.max.delays times during fetching. */  public static final int BLOCKED              = 23;     // Useful static instances for status codes that don't usually require any  // additional arguments.  public static final ProtocolStatus STATUS_SUCCESS = new ProtocolStatus(SUCCESS);  public static final ProtocolStatus STATUS_FAILED = new ProtocolStatus(FAILED);  public static final ProtocolStatus STATUS_GONE = new ProtocolStatus(GONE);  public static final ProtocolStatus STATUS_NOTFOUND = new ProtocolStatus(NOTFOUND);  public static final ProtocolStatus STATUS_RETRY = new ProtocolStatus(RETRY);  public static final ProtocolStatus STATUS_ROBOTS_DENIED = new ProtocolStatus(ROBOTS_DENIED);  public static final ProtocolStatus STATUS_REDIR_EXCEEDED = new ProtocolStatus(REDIR_EXCEEDED);  public static final ProtocolStatus STATUS_NOTFETCHING = new ProtocolStatus(NOTFETCHING);  public static final ProtocolStatus STATUS_NOTMODIFIED = new ProtocolStatus(NOTMODIFIED);  public static final ProtocolStatus STATUS_WOULDBLOCK = new ProtocolStatus(WOULDBLOCK);  public static final ProtocolStatus STATUS_BLOCKED = new ProtocolStatus(BLOCKED);    private int code;  private long lastModified;  private String[] args;    private static HashMap codeToName = new HashMap();  static {    codeToName.put(new Integer(SUCCESS), "success");    codeToName.put(new Integer(FAILED), "failed");    codeToName.put(new Integer(PROTO_NOT_FOUND), "proto_not_found");    codeToName.put(new Integer(GONE), "gone");    codeToName.put(new Integer(MOVED), "moved");    codeToName.put(new Integer(TEMP_MOVED), "temp_moved");    codeToName.put(new Integer(NOTFOUND), "notfound");    codeToName.put(new Integer(RETRY), "retry");    codeToName.put(new Integer(EXCEPTION), "exception");    codeToName.put(new Integer(ACCESS_DENIED), "access_denied");    codeToName.put(new Integer(ROBOTS_DENIED), "robots_denied");    codeToName.put(new Integer(REDIR_EXCEEDED), "redir_exceeded");    codeToName.put(new Integer(NOTFETCHING), "notfetching");    codeToName.put(new Integer(NOTMODIFIED), "notmodified");    codeToName.put(new Integer(WOULDBLOCK), "wouldblock");    codeToName.put(new Integer(BLOCKED), "blocked");  }    public ProtocolStatus() {      }  public byte getVersion() {    return VERSION;  }  public ProtocolStatus(int code, String[] args) {    this.code = code;    this.args = args;  }    public ProtocolStatus(int code, String[] args, long lastModified) {    this.code = code;    this.args = args;    this.lastModified = lastModified;  }    public ProtocolStatus(int code) {    this(code, null);  }    public ProtocolStatus(int code, long lastModified) {    this(code, null, lastModified);  }    public ProtocolStatus(int code, Object message) {    this(code, message, 0L);  }    public ProtocolStatus(int code, Object message, long lastModified) {    this.code = code;    this.lastModified = lastModified;    if (message != null) this.args = new String[]{String.valueOf(message)};  }    public ProtocolStatus(Throwable t) {    this(EXCEPTION, t);  }  public static ProtocolStatus read(DataInput in) throws IOException {    ProtocolStatus res = new ProtocolStatus();    res.readFields(in);    return res;  }    public void readFields(DataInput in) throws IOException {    super.readFields(in);       // check version    code = in.readByte();    lastModified = in.readLong();    args = WritableUtils.readCompressedStringArray(in);  }    public void write(DataOutput out) throws IOException {    super.write(out);           // write version    out.writeByte((byte)code);    out.writeLong(lastModified);    WritableUtils.writeCompressedStringArray(out, args);  }  public void setArgs(String[] args) {    this.args = args;  }    public String[] getArgs() {    return args;  }  public int getCode() {    return code;  }    public void setCode(int code) {    this.code = code;  }    public boolean isSuccess() {    return code == SUCCESS;   }    public boolean isTransientFailure() {    return        code == ACCESS_DENIED ||        code == EXCEPTION ||        code == REDIR_EXCEEDED ||        code == RETRY ||        code == TEMP_MOVED ||        code == WOULDBLOCK ||        code == PROTO_NOT_FOUND;   }    public boolean isPermanentFailure() {    return        code == FAILED ||        code == GONE ||        code == MOVED ||        code == NOTFOUND ||        code == ROBOTS_DENIED;  }    public String getMessage() {    if (args != null && args.length > 0) return args[0];    return null;  }    public void setMessage(String msg) {    if (args != null && args.length > 0) args[0] = msg;    else args = new String[] {msg};  }    public long getLastModified() {    return lastModified;  }    public void setLastModified(long lastModified) {    this.lastModified = lastModified;  }    public boolean equals(Object o) {    if (o == null) return false;    if (!(o instanceof ProtocolStatus)) return false;    ProtocolStatus other = (ProtocolStatus)o;    if (this.code != other.code || this.lastModified != other.lastModified) return false;    if (this.args == null) {      if (other.args == null) return true;      else return false;    } else {      if (other.args == null) return false;      if (other.args.length != this.args.length) return false;      for (int i = 0; i < this.args.length; i++) {        if (!this.args[i].equals(other.args[i])) return false;      }    }    return true;  }    public String toString() {    StringBuffer res = new StringBuffer();    res.append(codeToName.get(new Integer(code)) + "(" + code + "), lastModified=" + lastModified);    if (args != null) {      if (args.length == 1) {        res.append(": " + String.valueOf(args[0]));      } else {        for (int i = 0; i < args.length; i++) {          if (args[i] != null)            res.append(", args[" + i + "]=" + String.valueOf(args[i]));        }      }    }    return res.toString();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -