TASK_STATS_VERSION = 0x000a,
TASK_STATS_BUSY_NETWORKS = 0x000b,
TASK_STATS_VECTOR_DEBUG = 0x000c,
+ TASK_STATS_RENEW = 0x000d,
TASK_STATS = 0x0100, /* Mask */
TASK_STATS_TORRENTS = 0x0101,
static unsigned long long ot_full_scrape_request_count = 0;
static unsigned long long ot_full_scrape_size = 0;
static unsigned long long ot_failed_request_counts[CODE_HTTPERROR_COUNT];
+static unsigned long long ot_renewed[OT_POOLS_COUNT];
static time_t ot_start_time;
ot_failed_request_counts[6] );
}
+static size_t stats_return_renew_bucket( char * reply ) {
+ char *r = reply;
+ int i;
+
+ for( i=0; i<OT_BUCKET_COUNT; ++i )
+ r+=sprintf(r,"%02i %llu\n", i, ot_renewed[i] );
+ return r - reply;
+}
+
extern const char
*g_version_opentracker_c, *g_version_accesslist_c, *g_version_clean_c, *g_version_fullscrape_c, *g_version_http_c,
*g_version_iovec_c, *g_version_mutex_c, *g_version_stats_c, *g_version_sync_c, *g_version_udp_c, *g_version_vector_c,
return stats_httperrors_txt( reply );
case TASK_STATS_VERSION:
return stats_return_tracker_version( reply );
+ case TASK_STATS_RENEW:
+ return stats_return_renew_bucket( reply );
#ifdef WANT_LOG_NETWORKS
case TASK_STATS_BUSY_NETWORKS:
return stats_return_busy_networks( reply );
case EVENT_FAILED:
ot_failed_request_counts[event_data]++;
break;
+ case EVENT_RENEW:
+ ot_renewed[event_data]++;
+ break;
case EVENT_SYNC_IN_REQUEST:
case EVENT_SYNC_IN:
case EVENT_SYNC_OUT_REQUEST:
return torrent;
}
base_pool = 1;
+ if( torrent->peer_list->base < NOW )
+ torrent->peer_list->base = NOW;
}
#endif
case 1: default:
torrent->peer_list->peer_count--;
mutex_bucket_unlock_by_hash( hash );
+ stats_issue_event( EVENT_RENEW, 0, i );
return torrent;
}
}
if( OT_FLAG( peer_dest ) & PEER_FLAG_COMPLETED )
OT_FLAG( peer ) |= PEER_FLAG_COMPLETED;
+ stats_issue_event( EVENT_RENEW, 0, base_pool );
memmove( peer_dest, peer, sizeof( ot_peer ) );
}