Changeset 6931


Ignore:
Timestamp:
Oct 20, 2008, 3:47:48 AM (12 years ago)
Author:
charles
Message:

(libT) possible fix for the up/down display inconsistency reported by BentMyWookie?.

Location:
trunk/libtransmission
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/peer-mgr.c

    r6906 r6931  
    16561656                        int *              setmePeersSendingToUs,
    16571657                        int *              setmePeersGettingFromUs,
    1658                         int *              setmePeersFrom,
    1659                         double *           setmeRateToClient,
    1660                         double *           setmeRateToPeers )
     1658                        int *              setmePeersFrom )
    16611659{
    16621660    int                 i, size;
     
    16761674    *setmePeersSendingToUs     = 0;
    16771675    *setmeWebseedsSendingToUs  = 0;
    1678     *setmeRateToClient         = 0;
    1679     *setmeRateToPeers          = 0;
    16801676
    16811677    for( i = 0; i < TR_PEER_FROM__MAX; ++i )
     
    17021698        if( atom->flags & ADDED_F_SEED_FLAG )
    17031699            ++ * setmeSeedsConnected;
    1704 
    1705         *setmeRateToClient += tr_peerIoGetRateToClient( peer->io );
    1706 
    1707         *setmeRateToPeers += tr_peerIoGetRateToPeer( peer->io );
    17081700    }
    17091701
     
    25072499        countHandshakeBandwidth( t->outgoingHandshakes, direction );
    25082500
     2501        /* remember this torrent's bytes used */
     2502        t->tor->rateHistory[direction][pulseNumber] = used;
     2503
    25092504        /* add this torrent's bandwidth use to allBytesUsed */
    25102505        allBytesUsed += used;
     
    25182513
    25192514            case TR_SPEEDLIMIT_SINGLE:
    2520                 t->tor->rateHistory[direction][pulseNumber] = used;
    2521 
    25222515                setPeerBandwidth( t->peers, direction,
    2523                                  t->tor->rateHistory[direction],
    2524                                  tr_torrentGetSpeedLimit( t->tor,
    2525                                                           direction ) );
     2516                                  t->tor->rateHistory[direction],
     2517                                  tr_torrentGetSpeedLimit( t->tor,
     2518                                                           direction ) );
    25262519                break;
    25272520
  • trunk/libtransmission/peer-mgr.h

    r6795 r6931  
    4545tr_pex;
    4646
    47 int                 tr_pexCompare( const void * a,
    48                                    const void * b );
     47int tr_pexCompare( const void * a, const void * b );
    4948
    50 tr_peerMgr*         tr_peerMgrNew( struct tr_handle * );
     49tr_peerMgr* tr_peerMgrNew( struct tr_handle * );
    5150
    52 void                tr_peerMgrFree( tr_peerMgr * manager );
     51void tr_peerMgrFree( tr_peerMgr * manager );
    5352
    54 int                 tr_peerMgrPeerIsSeed(
    55     const tr_peerMgr *     mgr,
    56     const uint8_t *
    57                            torrentHash,
    58     const struct in_addr * addr );
     53int tr_peerMgrPeerIsSeed( const tr_peerMgr      * mgr,
     54                          const uint8_t         * torrentHash,
     55                          const struct in_addr  * addr );
    5956
    60 void                tr_peerMgrAddIncoming( tr_peerMgr *    manager,
    61                                            struct in_addr * addr,
    62                                            uint16_t         port,
    63                                            int              socket );
     57void tr_peerMgrAddIncoming( tr_peerMgr     * manager,
     58                            struct in_addr * addr,
     59                            uint16_t         port,
     60                            int              socket );
    6461
    65 tr_pex *            tr_peerMgrCompactToPex( const void *    compact,
    66                                             size_t          compactLen,
    67                                             const uint8_t * added_f,
    68                                             size_t          added_f_len,
    69                                             size_t *        setme_pex_count );
     62tr_pex * tr_peerMgrCompactToPex( const void    * compact,
     63                                 size_t          compactLen,
     64                                 const uint8_t * added_f,
     65                                 size_t          added_f_len,
     66                                 size_t        * setme_pex_count );
    7067
    71 void                tr_peerMgrAddPex( tr_peerMgr *    manager,
    72                                       const uint8_t * torrentHash,
    73                                       uint8_t         from,
    74                                       const tr_pex * pex );
     68void tr_peerMgrAddPex( tr_peerMgr     * manager,
     69                       const uint8_t * torrentHash,
     70                       uint8_t          from,
     71                       const tr_pex   * pex );
    7572
    76 void                tr_peerMgrSetBlame( tr_peerMgr *    manager,
    77                                         const uint8_t * torrentHash,
    78                                         tr_piece_index_t pieceIndex,
    79                                         int              success );
     73void tr_peerMgrSetBlame( tr_peerMgr        * manager,
     74                         const uint8_t     * torrentHash,
     75                         tr_piece_index_t    pieceIndex,
     76                         int                 success );
    8077
    81 int                 tr_peerMgrGetPeers( tr_peerMgr *    manager,
    82                                         const uint8_t * torrentHash,
    83                                         tr_pex **      setme_pex );
     78int  tr_peerMgrGetPeers( tr_peerMgr      * manager,
     79                         const uint8_t  * torrentHash,
     80                         tr_pex         ** setme_pex );
    8481
    85 void                tr_peerMgrStartTorrent( tr_peerMgr *    manager,
    86                                             const uint8_t * torrentHash );
     82void tr_peerMgrStartTorrent( tr_peerMgr     * manager,
     83                             const uint8_t * torrentHash );
    8784
    88 void                tr_peerMgrStopTorrent( tr_peerMgr *    manager,
    89                                            const uint8_t * torrentHash );
     85void tr_peerMgrStopTorrent( tr_peerMgr      * manager,
     86                             const uint8_t * torrentHash );
    9087
    91 void                tr_peerMgrAddTorrent( tr_peerMgr *        manager,
    92                                           struct tr_torrent * tor );
     88void tr_peerMgrAddTorrent( tr_peerMgr         * manager,
     89                           struct tr_torrent * tor );
    9390
    94 void                tr_peerMgrRemoveTorrent( tr_peerMgr *    manager,
    95                                              const uint8_t * torrentHash );
     91void tr_peerMgrRemoveTorrent( tr_peerMgr     * manager,
     92                              const uint8_t * torrentHash );
    9693
    97 void                tr_peerMgrTorrentAvailability(
    98     const tr_peerMgr * manager,
    99     const uint8_t *
    100                        torrentHash,
    101     int8_t *           tab,
    102     unsigned int
    103                        tabCount );
     94void tr_peerMgrTorrentAvailability( const tr_peerMgr * manager,
     95                                    const uint8_t    * torrentHash,
     96                                    int8_t           * tab,
     97                                    unsigned int       tabCount );
    10498
    10599struct tr_bitfield* tr_peerMgrGetAvailable( const tr_peerMgr * manager,
    106100                                            const uint8_t    * torrentHash );
    107101
    108 int                 tr_peerMgrHasConnections(
    109     const tr_peerMgr * manager,
    110     const uint8_t *
    111                        torrentHash );
     102int tr_peerMgrHasConnections( const tr_peerMgr * manager,
     103                              const uint8_t    * torrentHash );
    112104
    113 void                tr_peerMgrTorrentStats(
    114     const tr_peerMgr * manager,
    115     const uint8_t *    torrentHash,
    116     int *
    117                        setmePeersKnown,
    118     int *
    119                        setmePeersConnected,
    120     int *
    121                        setmeSeedsConnected,
    122     int *
    123                        setmeWebseedsSendingToUs,
    124     int *
    125                        setmePeersSendingToUs,
    126     int *
    127                        setmePeersGettingFromUs,
    128     int *
    129                        setmePeersFrom,                          /* <-- array of
    130                                                                   TR_PEER_FROM__MAX
    131                                                                   */
    132     double *
    133                        setmeRateToClient,
    134     double *
    135                        setmeRateToPeers );
     105void tr_peerMgrTorrentStats( const tr_peerMgr * manager,
     106                             const uint8_t * torrentHash,
     107                             int * setmePeersKnown,
     108                             int * setmePeersConnected,
     109                             int * setmeSeedsConnected,
     110                             int * setmeWebseedsSendingToUs,
     111                             int * setmePeersSendingToUs,
     112                             int * setmePeersGettingFromUs,
     113                             int * setmePeersFrom ); /* TR_PEER_FROM__MAX */
    136114
    137 double                tr_peerMgrGetRate( const tr_peerMgr * manager,
    138                                          tr_direction       direction );
     115double tr_peerMgrGetRate( const tr_peerMgr * manager,
     116                          tr_direction        direction );
    139117
    140 struct tr_peer_stat * tr_peerMgrPeerStats( const tr_peerMgr  * manager,
    141                                            const uint8_t     * torrentHash,
    142                                            int * setmeCount );
     118struct tr_peer_stat* tr_peerMgrPeerStats( const tr_peerMgr  * manager,
     119                                          const uint8_t     * torrentHash,
     120                                          int              * setmeCount );
    143121
    144 float*                tr_peerMgrWebSpeeds( const tr_peerMgr * manager,
    145                                            const uint8_t *    torrentHash );
     122float* tr_peerMgrWebSpeeds( const tr_peerMgr * manager,
     123                            const uint8_t     * torrentHash );
    146124
    147125
    148 struct tr_bitfield *  tr_peerMgrGenerateAllowedSet(
    149     const uint32_t setCount,
    150     const uint32_t
    151                    pieceCount,
    152     const uint8_t
    153                    infohash[20],
    154     const struct in_addr *
    155                    ip );
     126struct tr_bitfield * tr_peerMgrGenerateAllowedSet( const uint32_t setCount,
     127                                                   const uint32_t pieceCount,
     128                                                   const uint8_t infohash[20],
     129                                                   const struct in_addr * ip );
    156130
    157131
  • trunk/libtransmission/torrent.c

    r6896 r6931  
    714714}
    715715
     716static double
     717tr_torrentGetRate( const tr_torrent * tor,
     718                   tr_direction       direction )
     719{
     720    int    i;
     721    double bytes = 0;
     722
     723    assert( tor != NULL );
     724    assert( direction == TR_UP || direction == TR_DOWN );
     725
     726    for( i = 0; i < BANDWIDTH_PULSE_HISTORY; ++i )
     727        bytes += tor->rateHistory[direction][i];
     728
     729    return ( BANDWIDTH_PULSES_PER_SECOND * bytes )
     730           / ( BANDWIDTH_PULSE_HISTORY * 1024 );
     731}
     732
    716733const tr_stat *
    717734tr_torrentStatCached( tr_torrent * tor )
     
    778795                            &s->peersSendingToUs,
    779796                            &s->peersGettingFromUs,
    780                             s->peersFrom,
    781                             &s->rateDownload,
    782                             &s->rateUpload );
     797                            s->peersFrom );
     798
     799    s->rateDownload = tr_torrentGetRate( tor, TR_PEER_TO_CLIENT );
     800
     801    s->rateUpload = tr_torrentGetRate( tor, TR_CLIENT_TO_PEER );
    783802
    784803    usableSeeds += tor->info.webseedCount;
Note: See TracChangeset for help on using the changeset viewer.