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