Changeset 13900
- Timestamp:
- Jan 30, 2013, 6:00:03 PM (9 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-common.h
r13625 r13900 52 52 TR_PEER_CLIENT_GOT_BLOCK, 53 53 TR_PEER_CLIENT_GOT_CHOKE, 54 TR_PEER_CLIENT_GOT_ DATA,54 TR_PEER_CLIENT_GOT_PIECE_DATA, 55 55 TR_PEER_CLIENT_GOT_ALLOWED_FAST, 56 56 TR_PEER_CLIENT_GOT_SUGGEST, … … 61 61 TR_PEER_CLIENT_GOT_HAVE_ALL, 62 62 TR_PEER_CLIENT_GOT_HAVE_NONE, 63 TR_PEER_PEER_GOT_ DATA,63 TR_PEER_PEER_GOT_PIECE_DATA, 64 64 TR_PEER_ERROR 65 65 } … … 73 73 struct tr_bitfield * bitfield; /* for GOT_BITFIELD */ 74 74 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 */ 76 76 int err; /* errno for GOT_ERROR */ 77 bool wasPieceData; /* for GOT_DATA */78 77 tr_port port; /* for GOT_PORT */ 79 78 } -
trunk/libtransmission/peer-io.h
r13630 r13900 58 58 59 59 typedef ReadState (*tr_can_read_cb)(struct tr_peerIo * io, 60 61 62 63 typedef void 64 65 intwasPieceData,66 67 68 typedef void 69 70 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 bool wasPieceData, 66 void * userData); 67 68 typedef void (*tr_net_error_cb)(struct tr_peerIo * io, 69 short what, 70 void * userData); 71 71 72 72 typedef struct tr_peerIo … … 258 258 **/ 259 259 260 void tr_peerIoSetIOFuncs 261 262 263 264 265 266 void tr_peerIoClear 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); 267 267 268 268 /** … … 271 271 272 272 void tr_peerIoWriteBytes (tr_peerIo * io, 273 274 275 273 const void * writeme, 274 size_t writemeLen, 275 bool isPieceData); 276 276 277 277 void tr_peerIoWriteBuf (tr_peerIo * io, 278 279 278 struct evbuffer * buf, 279 bool isPieceData); 280 280 281 281 /** -
trunk/libtransmission/peer-mgr.c
r13890 r13900 102 102 }; 103 103 104 const tr_peer_event TR_PEER_EVENT_INIT = { 0, 0, NULL, 0, 0, 0, false,0 };104 const tr_peer_event TR_PEER_EVENT_INIT = { 0, 0, NULL, 0, 0, 0, 0 }; 105 105 106 106 /** … … 1698 1698 switch (e->eventType) 1699 1699 { 1700 case TR_PEER_PEER_GOT_ DATA:1700 case TR_PEER_PEER_GOT_PIECE_DATA: 1701 1701 { 1702 1702 const time_t now = tr_time (); 1703 1703 tr_torrent * tor = s->tor; 1704 1704 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) 1719 1729 peer->atom->piece_data_time = now; 1720 1730 … … 1779 1789 break; 1780 1790 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 1804 1791 case TR_PEER_CLIENT_GOT_BLOCK: 1805 1792 { 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)); 1807 1798 cancelAllRequestsForBlock (s, block, peer); 1808 1799 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); 1811 1802 break; 1812 1803 } -
trunk/libtransmission/peer-msgs.c
r13868 r13900 497 497 498 498 static void 499 fireClientGot Data (tr_peermsgs * msgs, uint32_t length, int wasPieceData)499 fireClientGotPieceData (tr_peermsgs * msgs, uint32_t length) 500 500 { 501 501 tr_peer_event e = TR_PEER_EVENT_INIT; 502 503 502 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 507 static void 508 firePeerGotPieceData (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; 506 513 publish (msgs, &e); 507 514 } … … 552 559 } 553 560 554 static void555 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 }565 561 566 562 /** … … 1332 1328 tr_peerIoReadBytesToBuf (msgs->peer->io, inbuf, block_buffer, n); 1333 1329 1334 fireClientGot Data (msgs, n, true);1330 fireClientGotPieceData (msgs, n); 1335 1331 *setme_piece_bytes_read += n; 1336 1332 dbgmsg (msgs, "got %zu bytes for block %u:%u->%u ... %d remain", … … 1604 1600 1605 1601 static void 1606 didWrite (tr_peerIo * io UNUSED, size_t bytesWritten, intwasPieceData, void * vmsgs)1602 didWrite (tr_peerIo * io UNUSED, size_t bytesWritten, bool wasPieceData, void * vmsgs) 1607 1603 { 1608 1604 tr_peermsgs * msgs = vmsgs; 1609 firePeerGotData (msgs, bytesWritten, wasPieceData); 1605 1606 if (wasPieceData) 1607 firePeerGotPieceData (msgs, bytesWritten); 1610 1608 1611 1609 if (tr_isPeerIo (io) && io->userData) … … 1648 1646 1649 1647 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);1654 1648 1655 1649 return ret; -
trunk/libtransmission/webseed.c
r13683 r13900 143 143 144 144 static void 145 fire_client_got_ data (tr_webseed * w, uint32_t length)145 fire_client_got_piece_data (tr_webseed * w, uint32_t length) 146 146 { 147 147 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; 149 149 e.length = length; 150 e.wasPieceData = true;151 150 publish (w, &e); 152 151 } … … 253 252 { 254 253 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); 256 255 } 257 256
Note: See TracChangeset
for help on using the changeset viewer.