Changeset 3861
- Timestamp:
- Nov 17, 2007, 11:43:33 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/torrent-inspector.c
r3848 r3861 240 240 PEER_COL_IS_UPLOADING, 241 241 PEER_COL_UPLOAD_RATE, 242 PEER_COL_STATUS, 242 243 N_PEER_COLS 243 244 }; … … 253 254 N_("DL Rate"), 254 255 N_("Uploading"), 255 N_("UL Rate") 256 N_("UL Rate"), 257 N_("Status") 256 258 }; 257 259 … … 289 291 PEER_COL_IS_UPLOADING, peer->isUploading, 290 292 PEER_COL_UPLOAD_RATE, peer->uploadToRate, 293 PEER_COL_STATUS, peer->status, 291 294 -1); 292 295 } … … 317 320 G_TYPE_FLOAT, /* downloadFromRate */ 318 321 G_TYPE_BOOLEAN, /* isUploading */ 319 G_TYPE_FLOAT); /* uploadToRate */ 322 G_TYPE_FLOAT, /* uploadToRate */ 323 G_TYPE_INT ); /* tr_peer_status */ 320 324 321 325 int n_peers = 0; … … 341 345 "stock-id", (is_encrypted ? "transmission-lock" : NULL), 342 346 NULL); 347 } 348 349 static void 350 render_status( GtkTreeViewColumn * column UNUSED, 351 GtkCellRenderer * renderer, 352 GtkTreeModel * tree_model, 353 GtkTreeIter * iter, 354 gpointer data UNUSED ) 355 { 356 int status; 357 const char * text; 358 gtk_tree_model_get( tree_model, iter, PEER_COL_STATUS, &status, -1 ); 359 switch( status ) 360 { 361 case TR_PEER_STATUS_HANDSHAKE: text = _( "Handshaking" ); break; 362 case TR_PEER_STATUS_PEER_IS_CHOKED: text = _( "Peer is Choked" ); break; 363 case TR_PEER_STATUS_CLIENT_IS_CHOKED: text = _( "Choked" ); break; 364 case TR_PEER_STATUS_CLIENT_IS_INTERESTED: text = _( "Choked and Interested" ); break; 365 case TR_PEER_STATUS_READY: text = _( "Ready" ); break; 366 case TR_PEER_STATUS_REQUEST_SENT: text = _( "Request Sent" ); break; 367 case TR_PEER_STATUS_ACTIVE : text = _( "Active" ); break; 368 default: text = "BUG"; break; 369 } 370 g_object_set (renderer, "text", text, NULL); 343 371 } 344 372 … … 496 524 PEER_COL_IS_ENCRYPTED, 497 525 PEER_COL_UPLOAD_RATE, 498 PEER_COL_DOWNLOAD_RATE }; 526 PEER_COL_DOWNLOAD_RATE, 527 PEER_COL_STATUS }; 499 528 500 529 m = peer_model_new (tor); … … 569 598 NULL, NULL); 570 599 break; 600 601 case PEER_COL_STATUS: 602 r = gtk_cell_renderer_text_new( ); 603 c = gtk_tree_view_column_new_with_attributes (t, r, "text", col, NULL); 604 gtk_tree_view_column_set_cell_data_func (c, r, render_status, NULL, NULL); 605 break; 606 571 607 572 608 default: -
trunk/libtransmission/peer-mgr-private.h
r3552 r3861 37 37 unsigned int doPurge : 1; 38 38 39 tr_peer_status status; 39 40 40 41 /* number of bad pieces they've contributed to */ -
trunk/libtransmission/peer-mgr.c
r3825 r3861 36 36 #include "ratecontrol.h" 37 37 #include "shared.h" 38 #include "trcompat.h" /* strlcpy */ 38 39 #include "trevent.h" 39 40 #include "utils.h" … … 1414 1415 1415 1416 tr_netNtop( &peer->in_addr, stat->addr, sizeof(stat->addr) ); 1417 strlcpy( stat->client, (peer->client ? peer->client : ""), sizeof(stat->client) ); 1416 1418 stat->port = peer->port; 1417 1419 stat->from = atom->from; 1418 stat->client = tr_strdup( peer->client ? peer->client : "" );1419 1420 stat->progress = peer->progress; 1420 1421 stat->isEncrypted = tr_peerIoIsEncrypted( peer->io ) ? 1 : 0; … … 1423 1424 stat->isDownloading = stat->uploadToRate > 0.01; 1424 1425 stat->isUploading = stat->downloadFromRate > 0.01; 1426 stat->status = peer->status; 1425 1427 } 1426 1428 … … 1483 1485 rechoke( Torrent * t ) 1484 1486 { 1485 int i, peerCount, size=0 , unchoked=0;1487 int i, peerCount, size=0; 1486 1488 const time_t fibrillationTime = time(NULL) - MIN_CHOKE_PERIOD_SEC; 1487 1489 tr_peer ** peers = getConnectedPeers( t, &peerCount ); … … 1506 1508 qsort( choke, size, sizeof(struct ChokeData), compareChoke ); 1507 1509 1508 for( i=0; i<size && i<NUM_UNCHOKED_PEERS_PER_TORRENT; ++i ) {1510 for( i=0; i<size && i<NUM_UNCHOKED_PEERS_PER_TORRENT; ++i ) 1509 1511 choke[i].doUnchoke = 1; 1510 ++unchoked;1511 }1512 1512 1513 1513 for( ; i<size; ++i ) { 1514 1514 choke[i].doUnchoke = 1; 1515 ++unchoked;1516 1515 if( choke[i].peer->peerIsInterested ) 1517 1516 break; -
trunk/libtransmission/peer-msgs.c
r3859 r3861 141 141 time_t clientSentAnythingAt; 142 142 143 unsigned int peerSentBitfield : 1; 143 144 unsigned int peerSupportsPex : 1; 144 145 unsigned int clientSentLtepHandshake : 1; … … 1027 1028 clientGotBlock( tr_peermsgs * msgs, const uint8_t * block, const struct peer_request * req ); 1028 1029 1030 static void 1031 clientGotBytes( tr_peermsgs * msgs, uint32_t byteCount ) 1032 { 1033 tr_torrent * tor = msgs->torrent; 1034 tor->activityDate = tr_date( ); 1035 tor->downloadedCur += byteCount; 1036 msgs->info->pieceDataActivityDate = time( NULL ); 1037 tr_rcTransferred( msgs->info->rcToClient, byteCount ); 1038 tr_rcTransferred( tor->download, byteCount ); 1039 tr_rcTransferred( tor->handle->download, byteCount ); 1040 } 1041 1042 1029 1043 static int 1030 1044 readBtPiece( tr_peermsgs * msgs, struct evbuffer * inbuf, size_t inlen ) … … 1054 1068 tr_peerIoReadBytes( msgs->io, inbuf, buf, n ); 1055 1069 evbuffer_add( msgs->incoming.block, buf, n ); 1070 clientGotBytes( msgs, n ); 1056 1071 tr_free( buf ); 1057 1072 dbgmsg( msgs, "got %d bytes for block %u:%u->%u ... %d remain", … … 1139 1154 const int clientIsSeed = tr_torrentIsSeed( msgs->torrent ); 1140 1155 dbgmsg( msgs, "got a bitfield" ); 1156 msgs->peerSentBitfield = 1; 1141 1157 tr_peerIoReadBytes( msgs->io, inbuf, msgs->info->have->bits, msglen ); 1142 1158 updatePeerProgress( msgs ); … … 1234 1250 1235 1251 static void 1236 clientGotBytes( tr_peermsgs * msgs, uint32_t byteCount )1237 {1238 tr_torrent * tor = msgs->torrent;1239 tor->activityDate = tr_date( );1240 tor->downloadedCur += byteCount;1241 msgs->info->pieceDataActivityDate = time( NULL );1242 tr_rcTransferred( msgs->info->rcToClient, byteCount );1243 tr_rcTransferred( tor->download, byteCount );1244 tr_rcTransferred( tor->handle->download, byteCount );1245 }1246 1247 static void1248 1252 peerGotBytes( tr_peermsgs * msgs, uint32_t byteCount ) 1249 1253 { … … 1369 1373 1370 1374 msgs->info->peerSentPieceDataAt = time( NULL ); 1371 clientGotBytes( msgs, req->length );1372 1375 i = tr_ioWrite( tor, req->index, req->offset, req->length, data ); 1373 1376 if( i ) … … 1481 1484 } 1482 1485 1486 static void 1487 updatePeerStatus( tr_peermsgs * msgs ) 1488 { 1489 tr_peer * peer = msgs->info; 1490 1491 if( !msgs->peerSentBitfield ) 1492 peer->status = TR_PEER_STATUS_HANDSHAKE; 1493 1494 else if( ( time(NULL) - peer->pieceDataActivityDate ) < 3 ) 1495 peer->status = TR_PEER_STATUS_ACTIVE; 1496 1497 else if( peer->clientIsChoked ) 1498 peer->status = TR_PEER_STATUS_CLIENT_IS_CHOKED; 1499 1500 else if( peer->peerIsChoked ) 1501 peer->status = TR_PEER_STATUS_PEER_IS_CHOKED; 1502 1503 else if( msgs->clientAskedFor != NULL ) 1504 peer->status = TR_PEER_STATUS_REQUEST_SENT; 1505 1506 else if( peer->clientIsInterested ) 1507 peer->status = TR_PEER_STATUS_CLIENT_IS_INTERESTED; 1508 1509 else 1510 peer->status = TR_PEER_STATUS_READY; 1511 } 1512 1483 1513 static int 1484 1514 pulse( void * vmsgs ) … … 1490 1520 1491 1521 tr_peerIoTryRead( msgs->io ); 1492 1493 1522 pumpRequestQueue( msgs ); 1523 updatePeerStatus( msgs ); 1494 1524 1495 1525 if( !canWrite( msgs ) ) … … 1741 1771 m->torrent = torrent; 1742 1772 m->io = info->io; 1773 m->info->status = TR_PEER_STATUS_HANDSHAKE; 1743 1774 m->info->clientIsChoked = 1; 1744 1775 m->info->peerIsChoked = 1; -
trunk/libtransmission/torrent.c
r3840 r3861 881 881 882 882 void 883 tr_torrentPeersFree( tr_peer_stat * peers, int peerCount ) 884 { 885 int i; 886 for( i=0; i<peerCount; ++i ) 887 tr_free( (char*) peers[i].client ); 883 tr_torrentPeersFree( tr_peer_stat * peers, int peerCount UNUSED ) 884 { 888 885 tr_free( peers ); 889 886 } -
trunk/libtransmission/transmission.h
r3810 r3861 684 684 }; 685 685 686 typedef enum 687 { 688 TR_PEER_STATUS_HANDSHAKE, 689 TR_PEER_STATUS_PEER_IS_CHOKED, 690 TR_PEER_STATUS_CLIENT_IS_CHOKED, 691 TR_PEER_STATUS_CLIENT_IS_INTERESTED, 692 TR_PEER_STATUS_READY, 693 TR_PEER_STATUS_REQUEST_SENT, 694 TR_PEER_STATUS_ACTIVE 695 } 696 tr_peer_status; 697 686 698 struct tr_peer_stat 687 699 { 688 char 689 c onst char * client;700 char addr[INET_ADDRSTRLEN]; 701 char client[80]; 690 702 691 703 unsigned int isEncrypted : 1; 692 704 unsigned int isDownloading : 1; 693 705 unsigned int isUploading : 1; 706 707 tr_peer_status status; 694 708 695 709 uint8_t from;
Note: See TracChangeset
for help on using the changeset viewer.