[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r21536 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r21536 - gnunet/src/ats |
Date: |
Wed, 16 May 2012 18:49:44 +0200 |
Author: wachs
Date: 2012-05-16 18:49:44 +0200 (Wed, 16 May 2012)
New Revision: 21536
Modified:
gnunet/src/ats/gnunet-service-ats_addresses.c
gnunet/src/ats/gnunet-service-ats_addresses.h
Log:
- suggestion throtteling as described in 2362
Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c 2012-05-16 15:43:30 UTC
(rev 21535)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c 2012-05-16 16:49:44 UTC
(rev 21536)
@@ -37,6 +37,8 @@
#define VERBOSE GNUNET_NO
+#define ATS_BLOCKING_DELTA
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 100)
+
enum ATS_Mode
{
/*
@@ -169,6 +171,8 @@
aa->plugin = GNUNET_strdup (plugin_name);
aa->session_id = session_id;
aa->mlp_information = NULL;
+ aa->blocked_until = GNUNET_TIME_absolute_get_zero();
+ aa->block_interval = GNUNET_TIME_relative_get_zero();
aa->next = NULL;
aa->prev = NULL;
return aa;
@@ -546,7 +550,27 @@
struct ATS_Address **ap = cls;
struct ATS_Address *aa = (struct ATS_Address *) value;
struct ATS_Address *ab = *ap;
+ struct GNUNET_TIME_Absolute now;
+ now = GNUNET_TIME_absolute_get();
+
+ if (aa->blocked_until.abs_value == GNUNET_TIME_absolute_max (now,
aa->blocked_until).abs_value)
+ {
+ /* This address is blocked for suggestion */
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Address %p blocked for suggestion for %llu ms \n",
+ aa,
+ GNUNET_TIME_absolute_get_difference(now,
aa->blocked_until).rel_value);
+ return GNUNET_OK;
+ }
+
+
+ aa->block_interval = GNUNET_TIME_relative_add (aa->block_interval,
ATS_BLOCKING_DELTA);
+ aa->blocked_until = GNUNET_TIME_absolute_add (now, aa->block_interval);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Address %p ready for suggestion, block interval now %llu \n",
aa, aa->block_interval);
+
if (NULL == ab)
{
*ap = aa;
@@ -678,6 +702,9 @@
return;
}
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
+ "Suggesting address %p for peer `%s'\n", aa, GNUNET_i2s (peer));
+
if (aa->active == GNUNET_NO)
{
aa->active = GNUNET_YES;
Modified: gnunet/src/ats/gnunet-service-ats_addresses.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.h 2012-05-16 15:43:30 UTC
(rev 21535)
+++ gnunet/src/ats/gnunet-service-ats_addresses.h 2012-05-16 16:49:44 UTC
(rev 21536)
@@ -75,6 +75,16 @@
struct GNUNET_BANDWIDTH_Value32NBO assigned_bw_out;
/**
+ * Blocking interval
+ */
+ struct GNUNET_TIME_Relative block_interval;
+
+ /**
+ * Time when address can be suggested again
+ */
+ struct GNUNET_TIME_Absolute blocked_until;
+
+ /**
* Is this the active address for this peer?
*/
int active;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r21536 - gnunet/src/ats,
gnunet <=