[Top][All Lists]
[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]);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19877 - gnunet/src/ats,
gnunet <=