diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-05 19:55:20 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-05 19:55:20 +0000 |
commit | f51150073e6f1ad16ab8d917e6b3f5437e40eb9c (patch) | |
tree | d07a97fde9449e1992b3051e9ae214b9dc6e48ed /src | |
parent | 3816824b405add09b33616b995477ffa01fdd68c (diff) | |
download | gnunet-f51150073e6f1ad16ab8d917e6b3f5437e40eb9c.tar.gz gnunet-f51150073e6f1ad16ab8d917e6b3f5437e40eb9c.zip |
fix correction according to paper, minimum NSE should be our neighour set
Diffstat (limited to 'src')
-rw-r--r-- | src/nse/gnunet-service-nse.c | 8 | ||||
-rw-r--r-- | src/nse/nse_api.c | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c index e70d6c29e..bc46a537c 100644 --- a/src/nse/gnunet-service-nse.c +++ b/src/nse/gnunet-service-nse.c | |||
@@ -308,6 +308,7 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em) | |||
308 | double q; | 308 | double q; |
309 | double r; | 309 | double r; |
310 | double temp; | 310 | double temp; |
311 | double nsize; | ||
311 | 312 | ||
312 | /* Weighted incremental algorithm for stddev according to West (1979) */ | 313 | /* Weighted incremental algorithm for stddev according to West (1979) */ |
313 | mean = 0.0; | 314 | mean = 0.0; |
@@ -333,12 +334,15 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em) | |||
333 | std_dev = sqrt (variance); | 334 | std_dev = sqrt (variance); |
334 | current_std_dev = std_dev; | 335 | current_std_dev = std_dev; |
335 | current_size_estimate = mean; | 336 | current_size_estimate = mean; |
336 | 337 | ||
337 | em->header.size = htons (sizeof (struct GNUNET_NSE_ClientMessage)); | 338 | em->header.size = htons (sizeof (struct GNUNET_NSE_ClientMessage)); |
338 | em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE); | 339 | em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE); |
339 | em->reserved = htonl (0); | 340 | em->reserved = htonl (0); |
340 | em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); | 341 | em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); |
341 | em->size_estimate = mean - 1.0 / 3.0; | 342 | em->size_estimate = mean - 0.332747; |
343 | nsize = log2 (GNUNET_CONTAINER_multihashmap_size (peers) + 1); | ||
344 | if (em->size_estimate < nsize) | ||
345 | em->size_estimate = nsize; | ||
342 | em->std_deviation = std_dev; | 346 | em->std_deviation = std_dev; |
343 | GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)", | 347 | GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)", |
344 | (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO); | 348 | (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO); |
diff --git a/src/nse/nse_api.c b/src/nse/nse_api.c index 0eb165fe5..476c77c2a 100644 --- a/src/nse/nse_api.c +++ b/src/nse/nse_api.c | |||
@@ -119,7 +119,8 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg) | |||
119 | } | 119 | } |
120 | client_msg = (const struct GNUNET_NSE_ClientMessage *) msg; | 120 | client_msg = (const struct GNUNET_NSE_ClientMessage *) msg; |
121 | h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp), | 121 | h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp), |
122 | client_msg->size_estimate, client_msg->std_deviation); | 122 | client_msg->size_estimate, |
123 | client_msg->std_deviation); | ||
123 | GNUNET_CLIENT_receive (h->client, &message_handler, h, | 124 | GNUNET_CLIENT_receive (h->client, &message_handler, h, |
124 | GNUNET_TIME_UNIT_FOREVER_REL); | 125 | GNUNET_TIME_UNIT_FOREVER_REL); |
125 | } | 126 | } |