* @brief GNUnet DHT integration with NSE
* @author Christian Grothoff
*/
+#include "platform.h"
+#include "gnunet_nse_service.h"
#include "gnunet-service-dht.h"
#include "gnunet-service-dht_nse.h"
update_network_size_estimate (void *cls, struct GNUNET_TIME_Absolute timestamp,
double logestimate, double std_dev)
{
- log_of_network_size_estimate = logestimate;
+ GNUNET_STATISTICS_update (GDS_stats,
+ gettext_noop ("# Network size estimates received"),
+ 1, GNUNET_NO);
+ /* do not allow estimates < 0.5 */
+ log_of_network_size_estimate = GNUNET_MAX (0.5, logestimate);
}
+/**
+ * Return the log of the current network size estimate.
+ *
+ * @return log of NSE
+ */
double
-GDS_nse_get ()
+GDS_NSE_get ()
{
return log_of_network_size_estimate;
}
+/**
+ * Initialize NSE subsystem.
+ */
void
-GDS_nse_init ()
+GDS_NSE_init ()
{
+ unsigned long long hops;
+
+ if ( (GNUNET_YES ==
+ GNUNET_CONFIGURATION_have_value (GDS_cfg,
+ "dht",
+ "FORCE_NSE")) &&
+ (GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_number (GDS_cfg,
+ "dht",
+ "FORCE_NSE",
+ &hops)) )
+ {
+ log_of_network_size_estimate = (double) hops;
+ return;
+ }
nse = GNUNET_NSE_connect (GDS_cfg, &update_network_size_estimate, NULL);
}
+/**
+ * Shutdown NSE subsystem.
+ */
void
-GDS_nse_done ()
-{
+GDS_NSE_done ()
+{
if (NULL != nse)
- {
+ {
GNUNET_NSE_disconnect (nse);
nse = NULL;
}