public class Storage extends Object
Modifier and Type | Field and Description |
---|---|
static int |
MAX_PIECE_SIZE
bigger than this will be rejected
|
static int |
MAX_PIECES
The maximum number of pieces in a torrent.
|
static long |
MAX_TOTAL_SIZE |
Constructor and Description |
---|
Storage(I2PSnarkUtil util,
File baseFile,
MetaInfo metainfo,
StorageListener listener,
boolean preserveFileNames)
Creates a new storage based on the supplied MetaInfo.
|
Storage(I2PSnarkUtil util,
File baseFile,
String announce,
List<List<String>> announce_list,
boolean privateTorrent,
StorageListener listener)
Creates a storage from the existing file or directory.
|
Modifier and Type | Method and Description |
---|---|
void |
check()
Creates (and/or checks) all files from the metainfo file list.
|
void |
check(long savedTime,
BitField savedBitField)
Creates (and/or checks) all files from the metainfo file list.
|
void |
cleanRAFs()
Close unused RAFs - call periodically
|
void |
close()
Closes the Storage and makes sure that all RandomAccessFiles are
closed.
|
boolean |
complete()
Whether or not this storage contains all pieces if the MetaInfo.
|
static String |
filterName(String name)
Removes 'suspicious' characters from the given file name.
|
File |
getBase()
The base file or directory.
|
String |
getBaseName()
The base file or directory name of the data,
as specified in the .torrent file, but filtered to remove
illegal characters.
|
BitField |
getBitField()
The BitField that tells which pieces this storage contains.
|
SortedSet<File> |
getDirectories()
Includes the base for a multi-file torrent.
|
int[] |
getFilePriorities()
Get the file priorities array.
|
List<File> |
getFiles()
Does not include directories.
|
MetaInfo |
getMetaInfo()
Returns the MetaInfo associated with this Storage.
|
ByteArray |
getPiece(int piece,
int off,
int len)
Returns a byte array containing a portion of the requested piece or null if
the storage doesn't contain the piece yet.
|
int[] |
getPiecePriorities()
Call setPriority() for all changed files first,
then call this.
|
boolean |
getPreserveFileNames() |
int |
getPriority(int fileIndex) |
int |
indexOf(File file)
Get index to pass to remaining(), getPriority(), setPriority()
|
boolean |
isAllocating()
Disk allocation (ballooning) in progress.
|
boolean |
isChanged()
Has the storage changed since instantiation?
|
boolean |
isChecking()
File checking in progress.
|
static void |
main(String[] args)
Create a metainfo.
|
int |
needed()
How many pieces are still missing from this storage.
|
boolean |
putPiece(PartialPiece pp)
Put the piece in the Storage if it is correct.
|
long |
remaining(int fileIndex) |
void |
reopen()
Doesn't really reopen the file descriptors for a restart.
|
(package private) void |
setFilePriorities(int[] p)
Set the file priorities array.
|
void |
setPriority(int fileIndex,
int pri)
Must call Snark.updatePiecePriorities()
(which calls getPiecePriorities()) after calling this.
|
public static final int MAX_PIECE_SIZE
public static final int MAX_PIECES
public static final long MAX_TOTAL_SIZE
public Storage(I2PSnarkUtil util, File baseFile, MetaInfo metainfo, StorageListener listener, boolean preserveFileNames)
baseFile
- the torrent data file or dirpreserveFileNames
- if true, do not remap names to a 'safe' charsetpublic Storage(I2PSnarkUtil util, File baseFile, String announce, List<List<String>> announce_list, boolean privateTorrent, StorageListener listener) throws IOException
announce
- may be nulllistener
- may be nullIOException
- when creating and/or checking files fails.public MetaInfo getMetaInfo()
public int needed()
public boolean complete()
public boolean isChanged()
public boolean isChecking()
public boolean isAllocating()
public int indexOf(File file)
file
- non-canonical path (non-directory)public long remaining(int fileIndex)
fileIndex
- as obtained from indexOfpublic int getPriority(int fileIndex)
fileIndex
- as obtained from indexOfpublic void setPriority(int fileIndex, int pri)
fileIndex
- as obtained from indexOfpri
- default 0; <0 to disablepublic int[] getFilePriorities()
void setFilePriorities(int[] p)
p
- may be nullpublic int[] getPiecePriorities()
public BitField getBitField()
public String getBaseName()
public boolean getPreserveFileNames()
public void check() throws IOException
IOException
public void check(long savedTime, BitField savedBitField) throws IOException
IOException
public void reopen() throws IOException
IOE
- on failIOException
public static String filterName(String name)
public File getBase()
public List<File> getFiles()
public SortedSet<File> getDirectories()
public void close() throws IOException
IOException
public ByteArray getPiece(int piece, int off, int len) throws IOException
IOException
public boolean putPiece(PartialPiece pp) throws IOException
IOException
- when some storage related error occurs.public void cleanRAFs()
public static void main(String[] args)