/* * Created : 2004/May/26 * * Copyright (C) 2004, 2005, 2006 Aelitis SAS, All rights Reserved * * 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. * * 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 ( see the LICENSE file ). * * 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 * * AELITIS, SAS au capital de 46,603.30 euros, * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. */ package org.gudy.azureus2.plugins.disk; import java.io.File; import org.gudy.azureus2.plugins.download.*; /** * @author TuxPaper * * @since 2.1.0.0 */ public interface DiskManagerFileInfo { public static final int READ = 1; public static final int WRITE = 2; public static final int PRIORITY_LOW = -1; public static final int PRIORITY_NORMAL = 0; public static final int PRIORITY_HIGH = 1; // set methods public void setPriority( boolean b ); /** * Sets the file's download priority base on a number * * @param priority Any number or {@link #PRIORITY_LOW}, {@link #PRIORITY_NORMAL}, {@link #PRIORITY_HIGH} * * @since 4407 */ public void setNumericPriority( int priority ); public void setSkipped( boolean b ); /** * Mark the file as deleted or not (deleted means the file will be truncated to take up minimum * space). This is generally 0 <= X < 2*piece_length as pieces can span file boundaries. * @since 2403 * @param b */ public void setDeleted(boolean b); // links the file to the named destination public void setLink( File link_destination ); // gets the current link, null if none public File getLink(); // get methods public int getAccessMode(); public long getDownloaded(); /** * Size when file is complete */ public long getLength(); public File getFile(); /** * returns liked file if it exists, direct otherwise * @param follow_link * @return * @since 4.3.1.5 */ public File getFile( boolean follow_link ); public int getIndex(); public int getFirstPieceNumber(); public long getPieceSize(); public int getNumPieces(); public boolean isPriority(); /** * @since 4407 * @return * @deprecated */ public int getNumericPriorty(); /** * * @return * * @since 4.8.1.3 */ public int getNumericPriority(); public boolean isSkipped(); public boolean isDeleted(); public byte[] getDownloadHash() throws DownloadException; public Download getDownload() throws DownloadException; public DiskManagerChannel createChannel() throws DownloadException; /** * Creates a random read request - these will be executed against the download * sequentially * @param file_offset * @param length * @param reverse_order - deliver blocks to the listener in reverse order * @param listener * @return * @throws DownloadException */ public DiskManagerRandomReadRequest createRandomReadRequest( long file_offset, long length, boolean reverse_order, DiskManagerListener listener ) throws DownloadException; }