/*
* File : TOTorrentFactory.java
* Created : 5 Oct. 2003
* By : Parg
*
* Azureus - a Java Bittorrent client
*
* 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
*/
package org.gudy.azureus2.core3.torrent;
import java.util.*;
import java.io.*;
import java.net.*;
import org.gudy.azureus2.core3.torrent.impl.*;
public class
TOTorrentFactory
{
public static final long TO_DEFAULT_FIXED_PIECE_SIZE = 256*1024;
public static final long TO_DEFAULT_VARIABLE_PIECE_SIZE_MIN = 32*1024;
public static final long TO_DEFAULT_VARIABLE_PIECE_SIZE_MAX = 2*1024*1024;
public static final long TO_DEFAULT_VARIABLE_PIECE_NUM_LOWER = 1024;
public static final long TO_DEFAULT_VARIABLE_PIECE_NUM_UPPER = 2048;
public static final long[] STANDARD_PIECE_SIZES = { 32*1024, 48*1024, 64*1024, 96*1024,
128*1024, 192*1024, 256*1024, 384*1024,
512*1024, 768*1024, 1024*1024,
1536*1024, 2*1024*1024, 3*1024*1024, 4*1024*1024 };
// deserialisation methods
public static TOTorrent
deserialiseFromBEncodedFile(
File file )
throws TOTorrentException
{
return( new TOTorrentDeserialiseImpl( file ));
}
/**
* WARNING - take care if you use this that the data you're creating the torrent from doesn't contain
* unwanted attributes in it (e.g. "torrent filename"). You should almost definitely be using
* TorrentUtils.deserialiseFromBEncodedInputStream
* @param is
* @return
* @throws TOTorrentException
*/
public static TOTorrent
deserialiseFromBEncodedInputStream(
InputStream is )
throws TOTorrentException
{
return( new TOTorrentDeserialiseImpl( is ));
}
public static TOTorrent
deserialiseFromBEncodedByteArray(
byte[] bytes )
throws TOTorrentException
{
return( new TOTorrentDeserialiseImpl( bytes ));
}
public static TOTorrent
deserialiseFromMap(
Map data )
throws TOTorrentException
{
return( new TOTorrentDeserialiseImpl( data ));
}
public static TOTorrent
deserialiseFromXMLFile(
File file )
throws TOTorrentException
{
return( new TOTorrentXMLDeserialiser().deserialise( file ));
}
// construction methods: fixed piece size
public static TOTorrentCreator
createFromFileOrDirWithFixedPieceLength(
File file,
URL announce_url )
throws TOTorrentException
{
return( createFromFileOrDirWithFixedPieceLength( file, announce_url, false, TO_DEFAULT_FIXED_PIECE_SIZE ));
}
public static TOTorrentCreator
createFromFileOrDirWithFixedPieceLength(
File file,
URL announce_url,
boolean add_hashes )
throws TOTorrentException
{
return( createFromFileOrDirWithFixedPieceLength( file, announce_url, add_hashes, TO_DEFAULT_FIXED_PIECE_SIZE ));
}
public static TOTorrentCreator
createFromFileOrDirWithFixedPieceLength(
File file,
URL announce_url,
long piece_length )
throws TOTorrentException
{
return( createFromFileOrDirWithFixedPieceLength( file, announce_url, false, piece_length ));
}
public static TOTorrentCreator
createFromFileOrDirWithFixedPieceLength(
File file,
URL announce_url,
boolean add_hashes,
long piece_length )
throws TOTorrentException
{
return( TOTorrentCreateImpl.create( file, announce_url, add_hashes, piece_length ));
}
// construction methods: variable piece size
public static TOTorrentCreator
createFromFileOrDirWithComputedPieceLength(
File file,
URL announce_url )
throws TOTorrentException
{
return( createFromFileOrDirWithComputedPieceLength( file, announce_url, false ));
}
public static TOTorrentCreator
createFromFileOrDirWithComputedPieceLength(
File file,
URL announce_url,
boolean add_hashes )
throws TOTorrentException
{
return( createFromFileOrDirWithComputedPieceLength(
file,
announce_url,
add_hashes,
TO_DEFAULT_VARIABLE_PIECE_SIZE_MIN,
TO_DEFAULT_VARIABLE_PIECE_SIZE_MAX,
TO_DEFAULT_VARIABLE_PIECE_NUM_LOWER,
TO_DEFAULT_VARIABLE_PIECE_NUM_UPPER ));
}
public static TOTorrentCreator
createFromFileOrDirWithComputedPieceLength(
File file,
URL announce_url,
long piece_min_size,
long piece_max_size,
long piece_num_lower,
long piece_num_upper )
throws TOTorrentException
{
return( createFromFileOrDirWithComputedPieceLength(
file, announce_url, false, piece_min_size, piece_max_size,
piece_num_lower, piece_num_upper ));
}
public static TOTorrentCreator
createFromFileOrDirWithComputedPieceLength(
File file,
URL announce_url,
boolean add_hashes,
long piece_min_size,
long piece_max_size,
long piece_num_lower,
long piece_num_upper )
throws TOTorrentException
{
return( TOTorrentCreateImpl.create(
file, announce_url, add_hashes, piece_min_size, piece_max_size,
piece_num_lower, piece_num_upper ));
}
public static long
getTorrentDataSizeFromFileOrDir(
File file_or_dir )
{
return( TOTorrentCreateImpl.getTorrentDataSizeFromFileOrDir( file_or_dir ));
}
public static long
getComputedPieceSize(
long data_size )
{
return( TOTorrentCreateImpl.getComputedPieceSize(
data_size,
TO_DEFAULT_VARIABLE_PIECE_SIZE_MIN,
TO_DEFAULT_VARIABLE_PIECE_SIZE_MAX,
TO_DEFAULT_VARIABLE_PIECE_NUM_LOWER,
TO_DEFAULT_VARIABLE_PIECE_NUM_UPPER ));
}
public static long
getPieceCount(
long total_size,
long piece_size )
{
return( TOTorrentCreateImpl.getPieceCount( total_size, piece_size ));
}
}
|