gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r25424 - gnunet/src/ats
Date: Wed, 12 Dec 2012 16:32:42 +0100

Author: wachs
Date: 2012-12-12 16:32:42 +0100 (Wed, 12 Dec 2012)
New Revision: 25424

Modified:
   gnunet/src/ats/Makefile.am
   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_addresses_mlp.h
   gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c
   gnunet/src/ats/gnunet-service-ats_addresses_simplistic.h
Log:
updating addresses support changing networks


Modified: gnunet/src/ats/Makefile.am
===================================================================
--- gnunet/src/ats/Makefile.am  2012-12-12 13:48:16 UTC (rev 25423)
+++ gnunet/src/ats/Makefile.am  2012-12-12 15:32:42 UTC (rev 25424)
@@ -52,6 +52,7 @@
 gnunet_service_ats_LDADD = \
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
   $(top_builddir)/src/util/libgnunetutil.la \
+  libgnunetats.la \
   $(GN_LIBGLPK) \
   $(GN_LIBINTL)
 gnunet_service_ats_DEPENDENCIES = \

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-12 13:48:16 UTC 
(rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-12 15:32:42 UTC 
(rev 25424)
@@ -310,6 +310,7 @@
   aa->plugin = GNUNET_strdup (plugin_name);
   aa->session_id = session_id;
   aa->active = GNUNET_NO;
+  aa->used = GNUNET_NO;
   aa->solver_information = NULL;
   aa->assigned_bw_in = GNUNET_BANDWIDTH_value_init(0);
   aa->assigned_bw_out = GNUNET_BANDWIDTH_value_init(0);
@@ -520,9 +521,6 @@
                 GNUNET_i2s (peer), session_id, aa);
     /* Tell solver about new address */
     handle->s_add (handle->solver, handle->addresses, aa);
-
-
-
     return;
   }
   GNUNET_free (aa->plugin);
@@ -530,7 +528,8 @@
 
   if (ea->session_id != 0)
   {
-      /* This addresswith the same session is already existing */
+      /* This address with the same session is already existing
+       * Should not happen */
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Added already existing address for peer `%s' `%s' %p with new 
session %u\n",
                 GNUNET_i2s (peer), plugin_name, session_id);
@@ -539,18 +538,21 @@
   }
 
   /* We have an address without an session, update this address */
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-            "Updated existing address for peer `%s' %p with new session %u\n",
-            GNUNET_i2s (peer), ea, session_id);
+
+  /* Notify solver about update with atsi information and session */
+  handle->s_update (handle->solver, handle->addresses, ea, session_id, 
ea->used, atsi, atsi_count);
+
+  /* Do the update */
   ea->session_id = session_id;
   if (atsi_count != (ats_res = disassemble_ats_information(atsi, atsi_count, 
ea)))
   {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "While updating address: had %u ATS elements to add, could 
only add %u\n",
-                atsi_count, ats_res);
+                  "While updating address: had %u ATS elements to add, could 
only add %u\n",
+                  atsi_count, ats_res);
   }
-
-  handle->s_update (handle->solver, handle->addresses, ea);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+           "Updated existing address for peer `%s' %p with new session %u\n",
+           GNUNET_i2s (peer), ea, session_id);
 }
 
 
@@ -586,6 +588,10 @@
                 "ADDRESS UPDATE",
                 GNUNET_i2s (peer), aa);
 
+  /* Tell solver about update */
+  handle->s_update (handle->solver, handle->addresses, aa, session_id, 
aa->used, atsi, atsi_count);
+
+  /* Update address */
   if (atsi_count != (ats_res = disassemble_ats_information (atsi, atsi_count, 
aa)))
   {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -595,9 +601,6 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
             "Updated %u ATS elements for address %p\n",
             ats_res, aa);
-
-  /* Tell solver about update */
-  handle->s_update (handle->solver, handle->addresses, aa);
 }
 
 
@@ -779,10 +782,10 @@
                 (GNUNET_NO == in_use) ? "NO" : "YES");
     return GNUNET_SYSERR;
   }
-  ea->used = in_use;
 
   /* Tell solver about update */
-  handle->s_update (handle->solver, handle->addresses, ea);
+  handle->s_update (handle->solver, handle->addresses, ea, session_id, in_use, 
NULL, 0);
+  ea->used = in_use;
 
   return GNUNET_OK;
 }

Modified: gnunet/src/ats/gnunet-service-ats_addresses.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.h       2012-12-12 13:48:16 UTC 
(rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses.h       2012-12-12 15:32:42 UTC 
(rev 25424)
@@ -209,7 +209,11 @@
 typedef void
 (*GAS_solver_address_update) (void *solver,
                               struct GNUNET_CONTAINER_MultiHashMap *addresses,
-                              struct ATS_Address *address);
+                              struct ATS_Address *address,
+                              uint32_t session,
+                              int in_use,
+                              const struct GNUNET_ATS_Information *atsi,
+                              uint32_t atsi_count);
 
 
 typedef const struct ATS_Address *

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-12-12 13:48:16 UTC 
(rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-12-12 15:32:42 UTC 
(rev 25424)
@@ -1550,7 +1550,13 @@
  * @param address the address to update
  */
 void
-GAS_mlp_address_update (void *solver, struct GNUNET_CONTAINER_MultiHashMap * 
addresses, struct ATS_Address *address)
+GAS_mlp_address_update (void *solver,
+                        struct GNUNET_CONTAINER_MultiHashMap *addresses,
+                        struct ATS_Address *address,
+                        uint32_t session,
+                        int in_use,
+                        const struct GNUNET_ATS_Information *atsi,
+                        uint32_t atsi_count)
 {
   struct GAS_MLP_Handle *mlp = solver;
   int new;

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-12-12 13:48:16 UTC 
(rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-12-12 15:32:42 UTC 
(rev 25424)
@@ -356,8 +356,12 @@
  */
 void
 GAS_mlp_address_update (void *solver,
-                        struct GNUNET_CONTAINER_MultiHashMap * addresses,
-                        struct ATS_Address *address);
+                        struct GNUNET_CONTAINER_MultiHashMap *addresses,
+                        struct ATS_Address *address,
+                        uint32_t session,
+                        int in_use,
+                        const struct GNUNET_ATS_Information *atsi,
+                        uint32_t atsi_count);
 
 
 /**

Modified: gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c    2012-12-12 
13:48:16 UTC (rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c    2012-12-12 
15:32:42 UTC (rev 25424)
@@ -337,27 +337,83 @@
  * @param address the update address
  */
 void
-GAS_simplistic_address_update (void *solver, struct 
GNUNET_CONTAINER_MultiHashMap * addresses, struct ATS_Address *address)
+GAS_simplistic_address_update (void *solver,
+                              struct GNUNET_CONTAINER_MultiHashMap *addresses,
+                              struct ATS_Address *address,
+                              uint32_t session,
+                              int in_use,
+                              const struct GNUNET_ATS_Information *atsi,
+                              uint32_t atsi_count)
 {
-#if 0
-  struct GAS_SIMPLISTIC_Handle *s = solver;
-  GNUNET_assert (NULL != s);
-  int c;
-  for (c = 0; c < s->networks; c++)
+  int i;
+  uint32_t value;
+  uint32_t type;
+  for (i = 0; i < atsi_count; i++)
   {
-      if (address->atsp_network_type == s->quota_net[c])
-      {
-          LOG (GNUNET_ERROR_TYPE_DEBUG,
-                      "Updating address for network type %u (%u total)\n",
-                      address->atsp_network_type,
-                      s->active_addresses_per_net[c]);
-          break;
-      }
+    type = ntohl (atsi[i].type);
+    value = ntohl (atsi[i].value);
+    switch (type)
+    {
+    case GNUNET_ATS_UTILIZATION_UP:
+      //if (address->atsp_utilization_out.value__ != atsi[i].value)
+
+      break;
+    case GNUNET_ATS_UTILIZATION_DOWN:
+      //if (address->atsp_utilization_in.value__ != atsi[i].value)
+
+      break;
+    case GNUNET_ATS_QUALITY_NET_DELAY:
+      //if (address->atsp_latency.rel_value != value)
+
+      break;
+    case GNUNET_ATS_QUALITY_NET_DISTANCE:
+      //if (address->atsp_distance != value)
+
+      break;
+    case GNUNET_ATS_COST_WAN:
+      //if (address->atsp_cost_wan != value)
+
+      break;
+    case GNUNET_ATS_COST_LAN:
+      //if (address->atsp_cost_lan != value)
+
+      break;
+    case GNUNET_ATS_COST_WLAN:
+      //if (address->atsp_cost_wlan != value)
+
+      break;
+    case GNUNET_ATS_NETWORK_TYPE:
+      if (address->atsp_network_type != value)
+        LOG (GNUNET_ERROR_TYPE_ERROR, "Network changed from `%s' to `%s'\n",
+            GNUNET_ATS_print_network_type(address->atsp_network_type),
+            GNUNET_ATS_print_network_type(value));
+      break;
+    case GNUNET_ATS_ARRAY_TERMINATOR:
+      break;
+    default:
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "Received unsupported ATS type %u\n", type);
+      GNUNET_break (0);
+      break;
+
+    }
+
   }
 
-  /* Update quota for this network type */
-  update_quota_per_network (s, c);
-#endif
+
+  if (address->session_id != session)
+  {
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+                  "Session changed from %u to %u\n", address->session_id, 
session);
+      address->session_id = session;
+  }
+  if (address->used != in_use)
+  {
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+                  "Usage changed from %u to %u\n", address->used, in_use);
+      address->used = in_use;
+  }
+
 }
 
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses_simplistic.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_simplistic.h    2012-12-12 
13:48:16 UTC (rev 25423)
+++ gnunet/src/ats/gnunet-service-ats_addresses_simplistic.h    2012-12-12 
15:32:42 UTC (rev 25424)
@@ -89,7 +89,13 @@
  * @param address the update address
  */
 void
-GAS_simplistic_address_update (void *solver, struct 
GNUNET_CONTAINER_MultiHashMap * addresses, struct ATS_Address *address);
+GAS_simplistic_address_update (void *solver,
+    struct GNUNET_CONTAINER_MultiHashMap *addresses,
+    struct ATS_Address *address,
+    uint32_t session,
+    int in_use,
+    const struct GNUNET_ATS_Information *atsi,
+    uint32_t atsi_count);
 
 
 /**




reply via email to

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