From 473907d891572703809158f3f35a1e9d54e06da0 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 25 Dec 2007 05:37:32 +0000 Subject: [PATCH] a little housekeeping: move tr_torrent stuff into its own header --- libtransmission/completion.c | 1 + libtransmission/completion.h | 1 + libtransmission/fastresume.c | 1 + libtransmission/handshake.c | 3 +- libtransmission/inout.c | 1 + libtransmission/internal.h | 128 --------------------------- libtransmission/peer-mgr.c | 1 + libtransmission/peer-msgs.c | 1 + libtransmission/shared.c | 1 + libtransmission/torrent.c | 1 + libtransmission/torrent.h | 155 +++++++++++++++++++++++++++++++++ libtransmission/tracker.c | 1 + libtransmission/transmission.c | 1 + 13 files changed, 167 insertions(+), 129 deletions(-) create mode 100644 libtransmission/torrent.h diff --git a/libtransmission/completion.c b/libtransmission/completion.c index 79924d1ae..f0c040a4c 100644 --- a/libtransmission/completion.c +++ b/libtransmission/completion.c @@ -27,6 +27,7 @@ #include "transmission.h" #include "completion.h" +#include "torrent.h" #include "utils.h" struct tr_completion diff --git a/libtransmission/completion.h b/libtransmission/completion.h index 305ce6bdd..7c341d6db 100644 --- a/libtransmission/completion.h +++ b/libtransmission/completion.h @@ -27,6 +27,7 @@ #include "transmission.h" +struct tr_bitfield; typedef struct tr_completion tr_completion; tr_completion * tr_cpInit( tr_torrent * ); diff --git a/libtransmission/fastresume.c b/libtransmission/fastresume.c index e5c151a31..3732893a5 100644 --- a/libtransmission/fastresume.c +++ b/libtransmission/fastresume.c @@ -60,6 +60,7 @@ #include "internal.h" /* tr_torrentInitFileDLs */ #include "peer-mgr.h" #include "platform.h" +#include "torrent.h" #include "utils.h" /* time_t can be 32 or 64 bits... for consistency we'll hardwire 64 */ diff --git a/libtransmission/handshake.c b/libtransmission/handshake.c index aaa6fa6a2..3b29a98a7 100644 --- a/libtransmission/handshake.c +++ b/libtransmission/handshake.c @@ -20,12 +20,13 @@ #include -#include "clients.h" #include "transmission.h" #include "bencode.h" +#include "clients.h" #include "crypto.h" #include "handshake.h" #include "peer-io.h" +#include "torrent.h" #include "trevent.h" #include "utils.h" diff --git a/libtransmission/inout.c b/libtransmission/inout.c index 33fdeec26..3a822ead6 100644 --- a/libtransmission/inout.c +++ b/libtransmission/inout.c @@ -28,6 +28,7 @@ #include "platform.h" #include "peer-mgr.h" #include "stats.h" +#include "torrent.h" #include "utils.h" /**** diff --git a/libtransmission/internal.h b/libtransmission/internal.h index 2f8faf419..ef1b5accb 100644 --- a/libtransmission/internal.h +++ b/libtransmission/internal.h @@ -43,16 +43,6 @@ typedef enum { TR_NET_OK, TR_NET_ERROR, TR_NET_WAIT } tr_tristate_t; #define FALSE 0 #endif -/* just like tr_torrentSetFileDLs but doesn't trigger a fastresume save */ -void tr_torrentInitFileDLs( tr_torrent * tor, - int * files, - int fileCount, - int do_download ); - -int tr_torrentIsPrivate( const tr_torrent * ); - -void tr_torrentRecheckCompleteness( tr_torrent * ); - int tr_trackerInfoInit( struct tr_tracker_info * info, const char * address, int address_len ); @@ -61,123 +51,6 @@ void tr_trackerInfoClear( struct tr_tracker_info * info ); void tr_peerIdNew ( char* buf, int buflen ); -void tr_torrentResetTransferStats( tr_torrent * ); - -void tr_torrentSetHasPiece( tr_torrent * tor, int pieceIndex, int has ); - -void tr_torrentLock ( const tr_torrent * ); -void tr_torrentUnlock ( const tr_torrent * ); - -int tr_torrentIsSeed ( const tr_torrent * ); - -void tr_torrentChangeMyPort ( tr_torrent * ); - -int tr_torrentExists( tr_handle *, const uint8_t * ); -tr_torrent* tr_torrentFindFromHash( tr_handle *, const uint8_t * ); -tr_torrent* tr_torrentFindFromObfuscatedHash( tr_handle *, const uint8_t* ); - -void tr_torrentGetRates( const tr_torrent *, float * toClient, float * toPeer ); - -int tr_torrentAllowsPex( const tr_torrent * ); - -/* get the index of this piece's first block */ -#define tr_torPieceFirstBlock(tor,piece) ( (piece) * (tor)->blockCountInPiece ) - -/* what piece index is this block in? */ -#define tr_torBlockPiece(tor,block) ( (block) / (tor)->blockCountInPiece ) - -/* how many blocks are in this piece? */ -#define tr_torPieceCountBlocks(tor,piece) \ - ( ((piece)==((tor)->info.pieceCount-1)) ? (tor)->blockCountInLastPiece : (tor)->blockCountInPiece ) - -/* how many bytes are in this piece? */ -#define tr_torPieceCountBytes(tor,piece) \ - ( ((piece)==((tor)->info.pieceCount-1)) ? (tor)->lastPieceSize : (tor)->info.pieceSize ) - -/* how many bytes are in this block? */ -#define tr_torBlockCountBytes(tor,block) \ - ( ((block)==((tor)->blockCount-1)) ? (tor)->lastBlockSize : (tor)->blockSize ) - -#define tr_block(a,b) _tr_block(tor,a,b) -int _tr_block( const tr_torrent * tor, int index, int begin ); - -uint64_t tr_pieceOffset( const tr_torrent * tor, int index, int begin, int length ); - -typedef enum -{ - TR_RECHECK_NONE, - TR_RECHECK_WAIT, - TR_RECHECK_NOW -} -tr_recheck_state; - -#define TR_ID_LEN 20 - -struct tr_torrent -{ - tr_handle * handle; - tr_info info; - - tr_speedlimit uploadLimitMode; - tr_speedlimit downloadLimitMode; - struct tr_ratecontrol * upload; - struct tr_ratecontrol * download; - struct tr_ratecontrol * swarmspeed; - - int error; - char errorString[128]; - - uint8_t obfuscatedHash[SHA_DIGEST_LENGTH]; - - /* Where to download */ - char * destination; - - /* How many bytes we ask for per request */ - int blockSize; - int blockCount; - - int lastBlockSize; - int lastPieceSize; - - int blockCountInPiece; - int blockCountInLastPiece; - - struct tr_completion * completion; - - struct tr_bitfield * uncheckedPieces; - cp_status_t cpStatus; - - struct tr_tracker * tracker; - struct tr_publisher_tag * trackerSubscription; - - uint64_t downloadedCur; - uint64_t downloadedPrev; - uint64_t uploadedCur; - uint64_t uploadedPrev; - uint64_t corruptCur; - uint64_t corruptPrev; - - uint64_t startDate; - uint64_t stopDate; - uint64_t activityDate; - - tr_torrent_status_func * status_func; - void * status_func_user_data; - - unsigned int statCur : 1; - unsigned int isRunning : 1; - - uint8_t maxUnchokedPeers; - uint16_t maxConnectedPeers; - - tr_recheck_state recheckState; - - time_t lastStatTime; - tr_stat stats[2]; - - tr_torrent * next; -}; - struct tr_handle { tr_encryption_mode encryptionMode; @@ -214,5 +87,4 @@ void tr_globalLock ( struct tr_handle * ); void tr_globalUnlock ( struct tr_handle * ); int tr_globalIsLocked ( const struct tr_handle * ); - #endif diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index efda2b04a..6a9a75fc3 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -35,6 +35,7 @@ #include "ptrarray.h" #include "ratecontrol.h" #include "shared.h" +#include "torrent.h" #include "trcompat.h" /* strlcpy */ #include "trevent.h" #include "utils.h" diff --git a/libtransmission/peer-msgs.c b/libtransmission/peer-msgs.c index fd7b53d25..997005cb1 100644 --- a/libtransmission/peer-msgs.c +++ b/libtransmission/peer-msgs.c @@ -33,6 +33,7 @@ #include "peer-msgs.h" #include "ratecontrol.h" #include "stats.h" +#include "torrent.h" #include "trevent.h" #include "utils.h" diff --git a/libtransmission/shared.c b/libtransmission/shared.c index cfe60db77..add6c7223 100644 --- a/libtransmission/shared.c +++ b/libtransmission/shared.c @@ -32,6 +32,7 @@ #include "net.h" #include "peer-mgr.h" #include "shared.h" +#include "torrent.h" #include "trevent.h" #include "upnp.h" #include "utils.h" diff --git a/libtransmission/torrent.c b/libtransmission/torrent.c index 678243144..fade63be0 100644 --- a/libtransmission/torrent.c +++ b/libtransmission/torrent.c @@ -43,6 +43,7 @@ #include "platform.h" #include "ratecontrol.h" #include "shared.h" +#include "torrent.h" #include "tracker.h" #include "trcompat.h" /* for strlcpy */ #include "trevent.h" diff --git a/libtransmission/torrent.h b/libtransmission/torrent.h new file mode 100644 index 000000000..043671089 --- /dev/null +++ b/libtransmission/torrent.h @@ -0,0 +1,155 @@ +/****************************************************************************** + * $Id:$ + * + * Copyright (c) 2005-2007 Transmission authors and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + *****************************************************************************/ + +#ifndef TR_TORRENT_H +#define TR_TORRENT_H 1 + +/* just like tr_torrentSetFileDLs but doesn't trigger a fastresume save */ +void tr_torrentInitFileDLs( tr_torrent * tor, + int * files, + int fileCount, + int do_download ); + +int tr_torrentIsPrivate( const tr_torrent * ); + +void tr_torrentRecheckCompleteness( tr_torrent * ); + +void tr_torrentResetTransferStats( tr_torrent * ); + +void tr_torrentSetHasPiece( tr_torrent * tor, int pieceIndex, int has ); + +void tr_torrentLock ( const tr_torrent * ); +void tr_torrentUnlock ( const tr_torrent * ); + +int tr_torrentIsSeed ( const tr_torrent * ); + +void tr_torrentChangeMyPort ( tr_torrent * ); + +int tr_torrentExists( tr_handle *, const uint8_t * ); +tr_torrent* tr_torrentFindFromHash( tr_handle *, const uint8_t * ); +tr_torrent* tr_torrentFindFromObfuscatedHash( tr_handle *, const uint8_t* ); + +void tr_torrentGetRates( const tr_torrent *, float * toClient, float * toPeer ); + +int tr_torrentAllowsPex( const tr_torrent * ); + +/* get the index of this piece's first block */ +#define tr_torPieceFirstBlock(tor,piece) ( (piece) * (tor)->blockCountInPiece ) + +/* what piece index is this block in? */ +#define tr_torBlockPiece(tor,block) ( (block) / (tor)->blockCountInPiece ) + +/* how many blocks are in this piece? */ +#define tr_torPieceCountBlocks(tor,piece) \ + ( ((piece)==((tor)->info.pieceCount-1)) ? (tor)->blockCountInLastPiece : (tor)->blockCountInPiece ) + +/* how many bytes are in this piece? */ +#define tr_torPieceCountBytes(tor,piece) \ + ( ((piece)==((tor)->info.pieceCount-1)) ? (tor)->lastPieceSize : (tor)->info.pieceSize ) + +/* how many bytes are in this block? */ +#define tr_torBlockCountBytes(tor,block) \ + ( ((block)==((tor)->blockCount-1)) ? (tor)->lastBlockSize : (tor)->blockSize ) + +#define tr_block(a,b) _tr_block(tor,a,b) +int _tr_block( const tr_torrent * tor, int index, int begin ); + +uint64_t tr_pieceOffset( const tr_torrent * tor, int index, int begin, int length ); + +typedef enum +{ + TR_RECHECK_NONE, + TR_RECHECK_WAIT, + TR_RECHECK_NOW +} +tr_recheck_state; + +#define TR_ID_LEN 20 + +struct tr_torrent +{ + tr_handle * handle; + tr_info info; + + tr_speedlimit uploadLimitMode; + tr_speedlimit downloadLimitMode; + struct tr_ratecontrol * upload; + struct tr_ratecontrol * download; + struct tr_ratecontrol * swarmspeed; + + int error; + char errorString[128]; + + uint8_t obfuscatedHash[SHA_DIGEST_LENGTH]; + + /* Where to download */ + char * destination; + + /* How many bytes we ask for per request */ + int blockSize; + int blockCount; + + int lastBlockSize; + int lastPieceSize; + + int blockCountInPiece; + int blockCountInLastPiece; + + struct tr_completion * completion; + + struct tr_bitfield * uncheckedPieces; + cp_status_t cpStatus; + + struct tr_tracker * tracker; + struct tr_publisher_tag * trackerSubscription; + + uint64_t downloadedCur; + uint64_t downloadedPrev; + uint64_t uploadedCur; + uint64_t uploadedPrev; + uint64_t corruptCur; + uint64_t corruptPrev; + + uint64_t startDate; + uint64_t stopDate; + uint64_t activityDate; + + tr_torrent_status_func * status_func; + void * status_func_user_data; + + unsigned int statCur : 1; + unsigned int isRunning : 1; + + uint8_t maxUnchokedPeers; + uint16_t maxConnectedPeers; + + tr_recheck_state recheckState; + + time_t lastStatTime; + tr_stat stats[2]; + + tr_torrent * next; +}; + +#endif diff --git a/libtransmission/tracker.c b/libtransmission/tracker.c index 8f1311434..fb2f14a6c 100644 --- a/libtransmission/tracker.c +++ b/libtransmission/tracker.c @@ -28,6 +28,7 @@ #include "net.h" #include "publish.h" #include "shared.h" +#include "torrent.h" #include "tracker.h" #include "trevent.h" #include "utils.h" diff --git a/libtransmission/transmission.c b/libtransmission/transmission.c index 1b3aa2ca1..f5c93ad9c 100644 --- a/libtransmission/transmission.c +++ b/libtransmission/transmission.c @@ -42,6 +42,7 @@ #include "ratecontrol.h" #include "shared.h" #include "stats.h" +#include "torrent.h" #include "tracker.h" #include "trevent.h" #include "utils.h"