Changeset 13900


Ignore:
Timestamp:
Jan 30, 2013, 6:00:03 PM (8 years ago)
Author:
jordan
Message:

(libT) peer-mgr doesn't care about non-piece data being transferred, so don't notify it when it happens

Location:
trunk/libtransmission
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/peer-common.h

    r13625 r13900  
    5252    TR_PEER_CLIENT_GOT_BLOCK,
    5353    TR_PEER_CLIENT_GOT_CHOKE,
    54     TR_PEER_CLIENT_GOT_DATA,
     54    TR_PEER_CLIENT_GOT_PIECE_DATA,
    5555    TR_PEER_CLIENT_GOT_ALLOWED_FAST,
    5656    TR_PEER_CLIENT_GOT_SUGGEST,
     
    6161    TR_PEER_CLIENT_GOT_HAVE_ALL,
    6262    TR_PEER_CLIENT_GOT_HAVE_NONE,
    63     TR_PEER_PEER_GOT_DATA,
     63    TR_PEER_PEER_GOT_PIECE_DATA,
    6464    TR_PEER_ERROR
    6565}
     
    7373    struct tr_bitfield  * bitfield;     /* for GOT_BITFIELD */
    7474    uint32_t              offset;       /* for GOT_BLOCK */
    75     uint32_t              length;       /* for GOT_BLOCK + GOT_DATA */
     75    uint32_t              length;       /* for GOT_BLOCK + GOT_PIECE_DATA */
    7676    int                   err;          /* errno for GOT_ERROR */
    77     bool                  wasPieceData; /* for GOT_DATA */
    7877    tr_port               port;         /* for GOT_PORT */
    7978}
  • trunk/libtransmission/peer-io.h

    r13630 r13900  
    5858
    5959typedef ReadState (*tr_can_read_cb)(struct tr_peerIo * io,
    60                                         void             * user_data,
    61                                         size_t           * setme_piece_byte_count);
    62 
    63 typedef void    (*tr_did_write_cb)(struct tr_peerIo * io,
    64                                         size_t             bytesWritten,
    65                                         int                wasPieceData,
    66                                         void             * userData);
    67 
    68 typedef void    (*tr_net_error_cb)(struct tr_peerIo * io,
    69                                         short              what,
    70                                         void             * userData);
     60                                    void             * user_data,
     61                                    size_t           * setme_piece_byte_count);
     62
     63typedef void (*tr_did_write_cb)(struct tr_peerIo * io,
     64                                size_t             bytesWritten,
     65                                bool               wasPieceData,
     66                                void             * userData);
     67
     68typedef void (*tr_net_error_cb)(struct tr_peerIo * io,
     69                                short              what,
     70                                void             * userData);
    7171
    7272typedef struct tr_peerIo
     
    258258**/
    259259
    260 void    tr_peerIoSetIOFuncs    (tr_peerIo        * io,
    261                                    tr_can_read_cb     readcb,
    262                                    tr_did_write_cb    writecb,
    263                                    tr_net_error_cb    errcb,
    264                                    void             * user_data);
    265 
    266 void    tr_peerIoClear         (tr_peerIo        * io);
     260void    tr_peerIoSetIOFuncs   (tr_peerIo        * io,
     261                               tr_can_read_cb     readcb,
     262                               tr_did_write_cb    writecb,
     263                               tr_net_error_cb    errcb,
     264                               void             * user_data);
     265
     266void    tr_peerIoClear        (tr_peerIo        * io);
    267267
    268268/**
     
    271271
    272272void    tr_peerIoWriteBytes   (tr_peerIo         * io,
    273                                   const void        * writeme,
    274                                   size_t              writemeLen,
    275                                   bool                isPieceData);
     273                               const void        * writeme,
     274                               size_t              writemeLen,
     275                               bool                isPieceData);
    276276
    277277void    tr_peerIoWriteBuf     (tr_peerIo         * io,
    278                                   struct evbuffer   * buf,
    279                                   bool                isPieceData);
     278                               struct evbuffer   * buf,
     279                               bool                isPieceData);
    280280
    281281/**
  • trunk/libtransmission/peer-mgr.c

    r13890 r13900  
    102102};
    103103
    104 const tr_peer_event TR_PEER_EVENT_INIT = { 0, 0, NULL, 0, 0, 0, false, 0 };
     104const tr_peer_event TR_PEER_EVENT_INIT = { 0, 0, NULL, 0, 0, 0, 0 };
    105105
    106106/**
     
    16981698  switch (e->eventType)
    16991699    {
    1700       case TR_PEER_PEER_GOT_DATA:
     1700      case TR_PEER_PEER_GOT_PIECE_DATA:
    17011701        {
    17021702          const time_t now = tr_time ();
    17031703          tr_torrent * tor = s->tor;
    17041704
    1705           if (e->wasPieceData)
    1706             {
    1707               tor->uploadedCur += e->length;
    1708               tr_announcerAddBytes (tor, TR_ANN_UP, e->length);
    1709               tr_torrentSetActivityDate (tor, now);
    1710               tr_torrentSetDirty (tor);
    1711             }
    1712 
    1713           /* update the stats */
    1714           if (e->wasPieceData)
    1715             tr_statsAddUploaded (tor->session, e->length);
    1716 
    1717           /* update our atom */
    1718           if (peer->atom && e->wasPieceData)
     1705          tor->uploadedCur += e->length;
     1706          tr_announcerAddBytes (tor, TR_ANN_UP, e->length);
     1707          tr_torrentSetActivityDate (tor, now);
     1708          tr_torrentSetDirty (tor);
     1709          tr_statsAddUploaded (tor->session, e->length);
     1710
     1711          if (peer->atom != NULL)
     1712            peer->atom->piece_data_time = now;
     1713
     1714          break;
     1715        }
     1716
     1717      case TR_PEER_CLIENT_GOT_PIECE_DATA:
     1718        {
     1719          const time_t now = tr_time ();
     1720          tr_torrent * tor = s->tor;
     1721
     1722          tor->downloadedCur += e->length;
     1723          tr_torrentSetActivityDate (tor, now);
     1724          tr_torrentSetDirty (tor);
     1725
     1726          tr_statsAddDownloaded (tor->session, e->length);
     1727
     1728          if (peer->atom != NULL)
    17191729            peer->atom->piece_data_time = now;
    17201730
     
    17791789        break;
    17801790
    1781       case TR_PEER_CLIENT_GOT_DATA:
    1782         {
    1783           const time_t now = tr_time ();
    1784           tr_torrent * tor = s->tor;
    1785 
    1786           if (e->wasPieceData)
    1787             {
    1788               tor->downloadedCur += e->length;
    1789               tr_torrentSetActivityDate (tor, now);
    1790               tr_torrentSetDirty (tor);
    1791             }
    1792 
    1793           /* update the stats */
    1794           if (e->wasPieceData)
    1795             tr_statsAddDownloaded (tor->session, e->length);
    1796 
    1797           /* update our atom */
    1798           if (peer->atom && e->wasPieceData)
    1799             peer->atom->piece_data_time = now;
    1800 
    1801           break;
    1802         }
    1803 
    18041791      case TR_PEER_CLIENT_GOT_BLOCK:
    18051792        {
    1806           const tr_block_index_t block = _tr_block (s->tor, e->pieceIndex, e->offset);
     1793          tr_torrent * tor = s->tor;
     1794          const tr_piece_index_t p = e->pieceIndex;
     1795          const tr_block_index_t block = _tr_block (tor, p, e->offset);
     1796          if (peer->msgs != NULL) /* webseed downloads don't belong in announce totals */
     1797            tr_announcerAddBytes (tor, TR_ANN_DOWN, tr_torPieceCountBytes (tor, p));
    18071798          cancelAllRequestsForBlock (s, block, peer);
    18081799          tr_historyAdd (&peer->blocksSentToClient, tr_time(), 1);
    1809           pieceListResortPiece (s, pieceListLookup (s, e->pieceIndex));
    1810           tr_torrentGotBlock (s->tor, block);
     1800          pieceListResortPiece (s, pieceListLookup (s, p));
     1801          tr_torrentGotBlock (tor, block);
    18111802          break;
    18121803        }
  • trunk/libtransmission/peer-msgs.c

    r13868 r13900  
    497497
    498498static void
    499 fireClientGotData (tr_peermsgs * msgs, uint32_t length, int wasPieceData)
     499fireClientGotPieceData (tr_peermsgs * msgs, uint32_t length)
    500500{
    501501    tr_peer_event e = TR_PEER_EVENT_INIT;
    502 
    503502    e.length = length;
    504     e.eventType = TR_PEER_CLIENT_GOT_DATA;
    505     e.wasPieceData = wasPieceData;
     503    e.eventType = TR_PEER_CLIENT_GOT_PIECE_DATA;
     504    publish (msgs, &e);
     505}
     506
     507static void
     508firePeerGotPieceData (tr_peermsgs * msgs, uint32_t length)
     509{
     510    tr_peer_event e = TR_PEER_EVENT_INIT;
     511    e.length = length;
     512    e.eventType = TR_PEER_PEER_GOT_PIECE_DATA;
    506513    publish (msgs, &e);
    507514}
     
    552559}
    553560
    554 static void
    555 firePeerGotData (tr_peermsgs * msgs, uint32_t length, bool wasPieceData)
    556 {
    557     tr_peer_event e = TR_PEER_EVENT_INIT;
    558 
    559     e.length = length;
    560     e.eventType = TR_PEER_PEER_GOT_DATA;
    561     e.wasPieceData = wasPieceData;
    562 
    563     publish (msgs, &e);
    564 }
    565561
    566562/**
     
    13321328        tr_peerIoReadBytesToBuf (msgs->peer->io, inbuf, block_buffer, n);
    13331329
    1334         fireClientGotData (msgs, n, true);
     1330        fireClientGotPieceData (msgs, n);
    13351331        *setme_piece_bytes_read += n;
    13361332        dbgmsg (msgs, "got %zu bytes for block %u:%u->%u ... %d remain",
     
    16041600
    16051601static void
    1606 didWrite (tr_peerIo * io UNUSED, size_t bytesWritten, int wasPieceData, void * vmsgs)
     1602didWrite (tr_peerIo * io UNUSED, size_t bytesWritten, bool wasPieceData, void * vmsgs)
    16071603{
    16081604    tr_peermsgs * msgs = vmsgs;
    1609     firePeerGotData (msgs, bytesWritten, wasPieceData);
     1605
     1606    if (wasPieceData)
     1607      firePeerGotPieceData (msgs, bytesWritten);
    16101608
    16111609    if (tr_isPeerIo (io) && io->userData)
     
    16481646
    16491647    dbgmsg (msgs, "canRead: ret is %d", (int)ret);
    1650 
    1651     /* log the raw data that was read */
    1652     if ((ret != READ_ERR) && (evbuffer_get_length (in) != inlen))
    1653         fireClientGotData (msgs, inlen - evbuffer_get_length (in), false);
    16541648
    16551649    return ret;
  • trunk/libtransmission/webseed.c

    r13683 r13900  
    143143
    144144static void
    145 fire_client_got_data (tr_webseed * w, uint32_t length)
     145fire_client_got_piece_data (tr_webseed * w, uint32_t length)
    146146{
    147147    tr_peer_event e = TR_PEER_EVENT_INIT;
    148     e.eventType = TR_PEER_CLIENT_GOT_DATA;
     148    e.eventType = TR_PEER_CLIENT_GOT_PIECE_DATA;
    149149    e.length = length;
    150     e.wasPieceData = true;
    151150    publish (w, &e);
    152151}
     
    253252    {
    254253        tr_bandwidthUsed (&w->bandwidth, TR_DOWN, n_added, true, tr_time_msec ());
    255         fire_client_got_data (w, n_added);
     254        fire_client_got_piece_data (w, n_added);
    256255    }
    257256
Note: See TracChangeset for help on using the changeset viewer.