gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r19877 - gnunet/src/ats
Date: Mon, 20 Feb 2012 22:42:26 +0100

Author: wachs
Date: 2012-02-20 22:42:26 +0100 (Mon, 20 Feb 2012)
New Revision: 19877

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


Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2012-02-20 20:45:19 UTC 
(rev 19876)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2012-02-20 21:42:26 UTC 
(rev 19877)
@@ -600,23 +600,41 @@
     /* Get address with: stick to current address, lower distance, lower 
latency */
     GNUNET_CONTAINER_multihashmap_get_multiple (addresses, &peer->hashPubKey,
                                                 &find_address_it, &aa);
-    if (aa == NULL)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Cannot suggest address for peer `%s'\n", GNUNET_i2s (peer));
-      return;
-    }
   }
   if (ats_mode == MLP)
   {
+#if HAVE_GLPK
+#endif
     /* Get preferred address from MLP */
+    struct ATS_PreferedAddress * paddr = NULL;
+    paddr = GAS_mlp_get_preferred_address (mlp, addresses, peer);
+    aa = paddr->address;
+    aa->assigned_bw_out = GNUNET_BANDWIDTH_value_init(paddr->bandwidth_out);
+    /* FIXME use bw in value */
+    paddr->bandwidth_in = paddr->bandwidth_out;
+    aa->assigned_bw_in = GNUNET_BANDWIDTH_value_init (paddr->bandwidth_in);
+    GNUNET_free (paddr);
   }
 
+  if (aa == NULL)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Cannot suggest address for peer `%s'\n", GNUNET_i2s (peer));
+    return;
+  }
+
   if (aa->active == GNUNET_NO)
   {
     aa->active = GNUNET_YES;
     active_addr_count++;
-    recalculate_assigned_bw ();
+    if (ats_mode == SIMPLE)
+    {
+      recalculate_assigned_bw ();
+    }
+    if (ats_mode == SIMPLE)
+    {
+      recalculate_assigned_bw ();
+    }
   }
   else
   {

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-02-20 20:45:19 UTC 
(rev 19876)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-02-20 21:42:26 UTC 
(rev 19877)
@@ -1553,12 +1553,17 @@
 mlp_get_preferred_address_it (void *cls, const GNUNET_HashCode * key, void 
*value)
 {
 
-  struct ATS_Address **aa = (struct ATS_Address **)cls;
+  struct ATS_PreferedAddress *aa = (struct ATS_PreferedAddress *) cls;
   struct ATS_Address *addr = value;
   struct MLP_information *mlpi = addr->mlp_information;
   if (mlpi->n == GNUNET_YES)
   {
-    *aa = addr;
+    aa->address = addr;
+    if (mlpi->b > (double) UINT32_MAX)
+      aa->bandwidth_out = UINT32_MAX;
+    else
+      aa->bandwidth_out = (uint32_t) mlpi->b;
+    aa->bandwidth_in = 0;
     return GNUNET_NO;
   }
   return GNUNET_YES;
@@ -1572,14 +1577,14 @@
  * @param peer the peer
  * @return suggested address
  */
-struct ATS_Address *
+struct ATS_PreferedAddress *
 GAS_mlp_get_preferred_address (struct GAS_MLP_Handle *mlp,
                                struct GNUNET_CONTAINER_MultiHashMap * 
addresses,
                                const struct GNUNET_PeerIdentity *peer)
 {
-  struct ATS_Address * aa = NULL;
+  struct ATS_PreferedAddress * aa = GNUNET_malloc (sizeof (struct 
ATS_PreferedAddress));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Getting preferred address for `%s'\n", 
GNUNET_i2s (peer));
-  GNUNET_CONTAINER_multihashmap_get_multiple(addresses, &peer->hashPubKey, 
mlp_get_preferred_address_it, &aa);
+  GNUNET_CONTAINER_multihashmap_get_multiple(addresses, &peer->hashPubKey, 
mlp_get_preferred_address_it, aa);
   return aa;
 }
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-02-20 20:45:19 UTC 
(rev 19876)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-02-20 21:42:26 UTC 
(rev 19877)
@@ -61,6 +61,13 @@
   struct ATS_Address *tail;
 };
 
+struct ATS_PreferedAddress
+{
+  uint32_t bandwidth_out;
+  uint32_t bandwidth_in;
+  struct ATS_Address *address;
+};
+
 /**
  * MLP Handle
  */
@@ -366,7 +373,7 @@
  * @param peer the peer
  * @return suggested address
  */
-struct ATS_Address *
+struct ATS_PreferedAddress *
 GAS_mlp_get_preferred_address (struct GAS_MLP_Handle *mlp,
                                struct GNUNET_CONTAINER_MultiHashMap * 
addresses,
                                const struct GNUNET_PeerIdentity *peer);

Modified: gnunet/src/ats/test_ats_mlp.c
===================================================================
--- gnunet/src/ats/test_ats_mlp.c       2012-02-20 20:45:19 UTC (rev 19876)
+++ gnunet/src/ats/test_ats_mlp.c       2012-02-20 21:42:26 UTC (rev 19877)
@@ -74,7 +74,7 @@
   return;
 #endif
   struct ATS_Address addr[10];
-  struct ATS_Address *res[10];
+  struct ATS_PreferedAddress *res[10];
 
   stats = GNUNET_STATISTICS_create("ats", cfg);
 
@@ -97,9 +97,8 @@
   set_ats (&a1_ats[1], GNUNET_ATS_QUALITY_NET_DELAY, 2);
   set_ats (&a1_ats[2], GNUNET_ATS_ARRAY_TERMINATOR, 0);
   create_address (&addr[0], "dummy", 3, &a1_ats[0]);
-  addr[0].atsp_network_type = GNUNET_ATS_NET_LOOPBACK;
+  addr[0].atsp_network_type = GNUNET_ATS_NET_WAN;
 
-
   /* Creating peer 1  address 2 */
   addr[1].peer.hashPubKey = p[0].hashPubKey;
   struct GNUNET_ATS_Information a2_ats[3];
@@ -116,7 +115,7 @@
   set_ats (&a3_ats[1], GNUNET_ATS_QUALITY_NET_DISTANCE, 1);
   set_ats (&a3_ats[2], GNUNET_ATS_ARRAY_TERMINATOR, 0);
   create_address (&addr[2], "dummy3", 3, &a3_ats[0]);
-  addr[2].atsp_network_type = GNUNET_ATS_NET_WAN;
+  addr[2].atsp_network_type = GNUNET_ATS_NET_LAN;
 
   GNUNET_CONTAINER_multihashmap_put(addresses, &addr[0].peer.hashPubKey, 
&addr[0], GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
 
@@ -144,9 +143,9 @@
   GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp));
 
   res[0] = GAS_mlp_get_preferred_address(mlp, addresses, &p[0]);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' 
\n",res[0]->plugin);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' outbound 
bandwidth: %u Bps\n",res[0]->address->plugin, res[0]->bandwidth_out);
   res[1] = GAS_mlp_get_preferred_address(mlp, addresses, &p[1]);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' 
\n",res[1]->plugin);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' outbound 
bandwidth: %u Bps\n",res[1]->address->plugin, res[1]->bandwidth_out);
 
   /* Delete an address */
   GNUNET_CONTAINER_multihashmap_remove (addresses, &addr[0].peer.hashPubKey, 
&addr[0]);




reply via email to

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