mode = TASK_STATS_TOP10;
else if( !byte_diff(data,5,"renew"))
mode = TASK_STATS_RENEW;
+ else if( !byte_diff(data,5,"syncs"))
+ mode = TASK_STATS_SYNCS;
else
HTTPERROR_400_PARAM;
break;
#include "trackerlogic.h"
#include "ot_livesync.h"
#include "ot_accesslist.h"
+#include "ot_stats.h"
#ifdef WANT_SYNC_LIVE
off += sizeof( ot_hash ) + sizeof( ot_peer );
}
+
+ stats_issue_event(EVENT_SYNC, 0, datalen / ((ssize_t)sizeof( ot_hash ) + (ssize_t)sizeof( ot_peer )));
}
/* Never returns. */
return NULL;
TASK_STATS_VERSION = 0x000a,
TASK_STATS_BUSY_NETWORKS = 0x000b,
TASK_STATS_RENEW = 0x000c,
+ TASK_STATS_SYNCS = 0x000d,
TASK_STATS = 0x0100, /* Mask */
TASK_STATS_TORRENTS = 0x0101,
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_PEER_TIMEOUT];
+static unsigned long long ot_overall_sync_count;
static time_t ot_start_time;
return r - reply;
}
+static size_t stats_return_sync_mrtg( char * reply )
+{
+ ot_time t = time( NULL ) - ot_start_time;
+ return sprintf( reply,
+ "%llu\n%llu\n%i seconds (%i hours)\nopentracker connections, %lu conns/s :: %lu success/s.",
+ ot_overall_sync_count,
+ 0,
+ (int)t,
+ (int)(t / 3600),
+ events_per_time( ot_overall_tcp_connections+ot_overall_udp_connections, t ),
+ events_per_time( ot_overall_tcp_successfulannounces+ot_overall_udp_successfulannounces+ot_overall_udp_connects, t )
+ );
+}
+
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_udp_c, *g_version_vector_c,
return stats_return_tracker_version( reply );
case TASK_STATS_RENEW:
return stats_return_renew_bucket( reply );
+ case TASK_STATS_SYNCS:
+ return stats_return_sync_mrtg( 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:
+ case EVENT_RENEW:
ot_renewed[event_data]++;
break;
+ case EVENT_SYNC:
+ ot_overall_sync_count+=event_data;
+ break;
default:
break;
}