package com.limegroup.gnutella; import java.io.IOException; import com.limegroup.gnutella.http.HTTPRequestMethod; /** * This interface outlines the basic functionality for a class that * performs uploads. */ public interface Uploader extends BandwidthTracker { public static final int CONNECTING = 0; public static final int FREELOADER = 1; public static final int LIMIT_REACHED = 2; public static final int UPLOADING = 3; public static final int COMPLETE = 4; public static final int INTERRUPTED = 5; public static final int FILE_NOT_FOUND = 7; public static final int BROWSE_HOST = 8; public static final int QUEUED = 9; public static final int UPDATE_FILE = 10; public static final int MALFORMED_REQUEST = 11; public static final int PUSH_PROXY = 12; public static final int UNAVAILABLE_RANGE = 13; public static final int BANNED_GREEDY = 14; public static final int THEX_REQUEST = 15; public static final int BROWSER_CONTROL = 16; public static final int NOT_VALIDATED = 17; /** * Stops this upload. If the download is already * stopped, it does nothing. */ public void stop(); /** * returns the name of the file being uploaded. */ public String getFileName(); /** * returns the length of the file being uploaded. */ public long getFileSize(); /** * returns the length of the requested size for uploading */ public long getAmountRequested(); /** * Returns the <tt>FileDesc</tt> for this uploader -- the file that * is being uploaded. * * @return the <tt>FileDesc</tt> for this uploader -- the file that * is being uploaded, which can be <tt>null</tt> in cases such as when * the file can't be found */ public FileDesc getFileDesc(); /** * returns the index of the file being uploaded. */ public int getIndex(); /** * returns the amount that of data that has been uploaded. * this method was previously called "amountRead", but the * name was changed to make more sense. */ public long amountUploaded(); /** * Returns the amount of data that this uploader and all previous * uploaders exchanging this file have uploaded. */ public long getTotalAmountUploaded(); /** * returns the string representation of the IP Address * of the host being uploaded to. */ public String getHost(); /** * Returns the current state of this uploader. */ public int getState(); /** * Returns the last transfer state of this uploader. * Transfers states are all states except INTERRUPTED, COMPLETE, * and CONNECTING. */ public int getLastTransferState(); /** * Sets the state of this uploader. */ public void setState(int state); public void writeResponse() throws IOException; /** * returns true if chat for the host is on, false if it is not. */ public boolean isChatEnabled(); /** * returns true if browse host is enabled, false if it is not. */ public boolean isBrowseHostEnabled(); /** * return the port of the gnutella-client host (not the HTTP port) */ public int getGnutellaPort(); /** * return the userAgent */ public String getUserAgent(); /** * return whether or not the headers have been parsed */ public boolean isHeaderParsed(); public boolean supportsQueueing(); /** * returns the current request method. */ public HTTPRequestMethod getMethod(); /** * Returns the current queue position if queued. */ public int getQueuePosition(); /** * Returns whether or not the uploader is in an inactive state. */ public boolean isInactive(); }