gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r25243 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r25243 - gnunet/src/ats
Date: Tue, 4 Dec 2012 17:04:24 +0100

Author: wachs
Date: 2012-12-04 17:04:24 +0100 (Tue, 04 Dec 2012)
New Revision: 25243

Modified:
   gnunet/src/ats/gnunet-service-ats_addresses.c
   gnunet/src/ats/gnunet-service-ats_addresses.h
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
   gnunet/src/ats/gnunet-service-ats_scheduling.c
Log:
changes

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-04 15:47:22 UTC 
(rev 25242)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-04 16:04:24 UTC 
(rev 25243)
@@ -65,6 +65,17 @@
 /**
  * Handle for ATS address component
  */
+struct GAS_Addresses_Suggestion_Requests
+{
+  struct GAS_Addresses_Suggestion_Requests *next;
+  struct GAS_Addresses_Suggestion_Requests *prev;
+
+  struct GNUNET_PeerIdentity id;
+};
+
+/**
+ * Handle for ATS address component
+ */
 struct GAS_Addresses_Handle
 {
   /**
@@ -102,6 +113,16 @@
    */
   void *solver;
 
+  /**
+   * Address suggestion requests DLL head
+   */
+  struct GAS_Addresses_Suggestion_Requests *r_head;
+
+  /**
+   * Address suggestion requests DLL tail
+   */
+  struct GAS_Addresses_Suggestion_Requests *r_tail;
+
   /* Solver functions */
 
   /**
@@ -957,12 +978,55 @@
 }
 
 
+/**
+ * Cancel address suggestions for a peer
+ *
+ * @param peer the respective peer
+ */
 void
+GAS_addresses_request_address_cancel (const struct GNUNET_PeerIdentity *peer)
+{
+  struct GAS_Addresses_Suggestion_Requests *cur = handle->r_head;
+  while (NULL != cur)
+  {
+      if (0 == memcmp (peer, &cur->id, sizeof (cur->id)))
+        break; /* found */
+      cur = cur->next;
+  }
+
+  if (NULL == cur)
+  {
+      GNUNET_break (0);
+      return;
+  }
+  GNUNET_CONTAINER_DLL_remove (handle->r_head, handle->r_tail, cur);
+  GNUNET_free (cur);
+}
+
+
+/**
+ * Add an address suggestions for a peer
+ *
+ * @param peer the respective peer
+ */
+void
 GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer)
 {
+  struct GAS_Addresses_Suggestion_Requests *cur = handle->r_head;
+
   if (GNUNET_NO == handle->running)
     return;
+  while (NULL != cur)
+  {
+      if (0 == memcmp (peer, &cur->id, sizeof (cur->id)))
+        return; /* already suggesting */
+      cur = cur->next;
+  }
 
+  cur = GNUNET_malloc (sizeof (struct GAS_Addresses_Suggestion_Requests));
+  cur->id = (*peer);
+  GNUNET_CONTAINER_DLL_insert (handle->r_head, handle->r_tail, cur);
+
   if (handle->ats_mode == MODE_SIMPLISTIC)
   {
     request_address_simple (peer);
@@ -1181,12 +1245,19 @@
 void
 GAS_addresses_done (struct GAS_Addresses_Handle *handle)
 {
+  struct GAS_Addresses_Suggestion_Requests *cur;
+
   GNUNET_assert (NULL != handle);
-
   GAS_addresses_destroy_all ();
   handle->running = GNUNET_NO;
   GNUNET_CONTAINER_multihashmap_destroy (handle->addresses);
   handle->addresses = NULL;
+  while (NULL != (cur = handle->r_head))
+  {
+      GNUNET_CONTAINER_DLL_remove (handle->r_head, handle->r_tail, cur);
+      GNUNET_free (cur);
+  }
+
   GNUNET_free (handle);
   /* Stop configured solution method */
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.h       2012-12-04 15:47:22 UTC 
(rev 25242)
+++ gnunet/src/ats/gnunet-service-ats_addresses.h       2012-12-04 16:04:24 UTC 
(rev 25243)
@@ -172,16 +172,17 @@
 GAS_addresses_destroy_all (void);
 
 
-// FIXME: this function should likely end up in the LP-subsystem and
-// not with 'addresses' in the future...
-// Note: this call should trigger an address suggestion
-// (GAS_scheduling_transmit_address_suggestion)
+/**
+ * Cancel address suggestions for a peer
+ *
+ * @param peer the respective peer
+ */
 void
+GAS_addresses_request_address_cancel (const struct GNUNET_PeerIdentity *peer);
+
+void
 GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer);
 
-
-// FIXME: this function should likely end up in the LP-subsystem and
-// not with 'addresses' in the future...
 void
 GAS_addresses_change_preference (const struct GNUNET_PeerIdentity *peer,
                                  enum GNUNET_ATS_PreferenceKind kind,

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-12-04 15:47:22 UTC 
(rev 25242)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-12-04 16:04:24 UTC 
(rev 25243)
@@ -1125,16 +1125,13 @@
 
   mlp->BIG_M = (double) BIG_M_VALUE;
 
-  /* Get maximum number of iterations */
-
-
   /* Get timeout for iterations */
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_time(cfg, "ats", 
"MAX_DURATION", &max_duration))
   {
     max_duration = MLP_MAX_EXEC_DURATION;
   }
 
-
+  /* Get maximum number of iterations */
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_size(cfg, "ats", 
"MAX_ITERATIONS", &max_iterations))
   {
     max_iterations = MLP_MAX_ITERATIONS;

Modified: gnunet/src/ats/gnunet-service-ats_scheduling.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_scheduling.c      2012-12-04 15:47:22 UTC 
(rev 25242)
+++ gnunet/src/ats/gnunet-service-ats_scheduling.c      2012-12-04 16:04:24 UTC 
(rev 25243)
@@ -193,7 +193,7 @@
               "REQUEST_ADDRESS_CANCEL");
   GNUNET_break (0 == ntohl (msg->reserved));
 
-  /* TODO */
+  GAS_addresses_request_address_cancel (&msg->peer);
 
   GNUNET_SERVER_receive_done (client, GNUNET_OK);
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]