예제 #1
0
파일: kad.c 프로젝트: sd542927172/KadNode
int kad_status( char *buf, int size ) {
	char hexbuf[SHA1_HEX_LENGTH+1];
	struct storage *strg = storage;
	struct search *srch = searches;
	int numsearches_active = 0;
	int numsearches_done = 0;
	int numstorage = 0;
	int numstorage_peers = 0;
	int numvalues = 0;
	int written = 0;

	/* count searches */
	while( srch != NULL ) {
		if( srch->done ) {
			numsearches_done++;
		} else {
			numsearches_active++;
		}
		srch = srch->next;
	}

	/* count storage and peers */
	while( strg != NULL ) {
		numstorage_peers += strg->numpeers;
		numstorage++;
		strg = strg->next;
	}

	numvalues = values_count();

	bprintf( "Version: %s\n", kadnode_version_str );
	bprintf( "DHT id: %s\n", str_id( myid, hexbuf ) );
	bprintf( "DHT bound to: %s:%s / %s\n",
		(gconf->af == AF_INET) ? "0.0.0.0" : "::",
		gconf->dht_port,
		(gconf->dht_ifname == NULL) ? "<any device>" : gconf->dht_ifname
   );

	bprintf( "DHT Nodes: %d (%d good) (%s)\n",
		kad_count_nodes( 0 ), kad_count_nodes( 1 ), (gconf->af == AF_INET) ? "IPv4" : "IPv6" );
	bprintf( "DHT Storage: %d (max %d), %d peers (max %d per storage)\n",
		numstorage, DHT_MAX_HASHES, numstorage_peers, DHT_MAX_PEERS );
	bprintf( "DHT Searches: %d active, %d completed (max %d)\n",
		numsearches_active, numsearches_done, DHT_MAX_SEARCHES );
	bprintf( "DHT Blacklist: %d (max %d)\n",
		(next_blacklisted % DHT_MAX_BLACKLISTED), DHT_MAX_BLACKLISTED );
	bprintf( "DHT Values to announce: %d\n", numvalues );

	return written;
}
예제 #2
0
파일: keys.c 프로젝트: lucab/gtk-gnutella
/**
 * Callout queue periodic event for request load updates.
 * Also reclaims dead keys holding no values.
 */
static bool
keys_periodic_load(void *unused_obj)
{
	struct load_ctx ctx;

	(void) unused_obj;

	ctx.values = 0;
	ctx.now = tm_time();
	hikset_foreach_remove(keys, keys_update_load, &ctx);

	g_assert(values_count() == ctx.values);

	if (GNET_PROPERTY(dht_storage_debug)) {
		size_t keys_count = hikset_count(keys);
		g_debug("DHT holding %zu value%s spread over %zu key%s",
			ctx.values, plural(ctx.values), keys_count, plural(keys_count));
	}

	return TRUE;		/* Keep calling */
}