From: Matthias Wachs Date: Tue, 2 Jul 2013 15:08:37 +0000 (+0000) Subject: finished buld support X-Git-Tag: initial-import-from-subversion-38251~8533 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1524472d6ceafe79495a81fc9313fa981495a3b1;p=oweals%2Fgnunet.git finished buld support --- diff --git a/src/ats/gnunet-service-ats-solver_mlp.c b/src/ats/gnunet-service-ats-solver_mlp.c index 5dbbee4e8..32e360688 100644 --- a/src/ats/gnunet-service-ats-solver_mlp.c +++ b/src/ats/gnunet-service-ats-solver_mlp.c @@ -953,6 +953,12 @@ GAS_mlp_solve_problem (void *solver, struct GNUNET_CONTAINER_MultiHashMap * addr struct GNUNET_TIME_Relative duration_mlp; GNUNET_assert (NULL != solver); + if (GNUNET_YES == mlp->bulk_lock) + { + mlp->bulk_request ++; + return GNUNET_NO; + } + if ((GNUNET_NO == mlp->mlp_prob_changed) && (GNUNET_NO == mlp->mlp_prob_updated)) { LOG (GNUNET_ERROR_TYPE_DEBUG, "No changes to problem\n"); @@ -1356,6 +1362,7 @@ GAS_mlp_address_update (void *solver, /* Problem size changed: new address for peer with pending request */ mlp->mlp_prob_updated = GNUNET_YES; + if (GNUNET_YES == mlp->mlp_auto_solve) GAS_mlp_solve_problem (solver, addresses); return; @@ -1538,10 +1545,10 @@ GAS_mlp_bulk_stop (void *solver) } s->bulk_lock --; - if (0 < s->bulk_changes) + if (0 < s->bulk_request) { GAS_mlp_solve_problem (solver, s->addresses); - s->bulk_changes = 0; + s->bulk_request= 0; } } @@ -1613,12 +1620,6 @@ GAS_mlp_address_change_preference (void *solver, /* Problem size changed: new address for peer with pending request */ mlp->mlp_prob_updated = GNUNET_YES; - if (GNUNET_YES == mlp->bulk_lock) - { - mlp->bulk_changes++; - return; - } - if (GNUNET_YES == mlp->mlp_auto_solve) GAS_mlp_solve_problem (solver, addresses); return; @@ -1908,6 +1909,8 @@ GAS_mlp_init (const struct GNUNET_CONFIGURATION_Handle *cfg, mlp->mlp_prob_updated = GNUNET_NO; mlp->mlp_auto_solve = GNUNET_YES; mlp->peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); + mlp->bulk_request = 0; + mlp->bulk_lock = 0; /* Setup GLPK */ /* Redirect GLPK output to GNUnet logging */ diff --git a/src/ats/gnunet-service-ats-solver_mlp.h b/src/ats/gnunet-service-ats-solver_mlp.h index efdd3d420..da149eeef 100644 --- a/src/ats/gnunet-service-ats-solver_mlp.h +++ b/src/ats/gnunet-service-ats-solver_mlp.h @@ -254,7 +254,7 @@ struct GAS_MLP_Handle /** * Number of changes while solver was locked */ - int bulk_changes; + int bulk_request; /** * GLPK LP control parameter diff --git a/src/ats/gnunet-service-ats-solver_proportional.c b/src/ats/gnunet-service-ats-solver_proportional.c index b9b0d9a4e..7f3fe58d8 100644 --- a/src/ats/gnunet-service-ats-solver_proportional.c +++ b/src/ats/gnunet-service-ats-solver_proportional.c @@ -251,7 +251,7 @@ struct GAS_PROPORTIONAL_Handle /** * Number of changes while solver was locked */ - int bulk_changes; + int bulk_requests; /** @@ -416,6 +416,13 @@ distribute_bandwidth_in_network (struct GAS_PROPORTIONAL_Handle *s, unsigned long long assigned_quota_out = 0; struct AddressWrapper *cur; + + if (GNUNET_YES == s->bulk_lock) + { + s->bulk_requests++; + return; + } + LOG (GNUNET_ERROR_TYPE_DEBUG, "Recalculate quota for network type `%s' for %u addresses (in/out): %llu/%llu \n", net->desc, net->active_addresses, net->total_quota_in, net->total_quota_in); @@ -654,6 +661,7 @@ static void distribute_bandwidth_in_all_networks (struct GAS_PROPORTIONAL_Handle *s) { int i; + for (i = 0; i < s->networks; i++) distribute_bandwidth_in_network (s, &s->network_entries[i], NULL); @@ -865,10 +873,7 @@ GAS_proportional_address_change_preference (void *solver, GNUNET_assert (NULL != solver); GNUNET_assert (NULL != peer); - if (GNUNET_NO == s->bulk_lock) - distribute_bandwidth_in_all_networks (s); - else - s->bulk_changes ++; + distribute_bandwidth_in_all_networks (s); } /** @@ -934,10 +939,7 @@ GAS_proportional_get_preferred_address (void *solver, s->bw_changed (s->bw_changed_cls, prev); /* notify about bw change, REQUIRED? */ if (GNUNET_SYSERR == addresse_decrement (s, net_prev, GNUNET_NO, GNUNET_YES)) GNUNET_break (0); - if (GNUNET_NO == s->bulk_lock) - distribute_bandwidth_in_network (s, net_prev, NULL); - else - s->bulk_changes ++; + distribute_bandwidth_in_network (s, net_prev, NULL); } if (GNUNET_NO == (is_bandwidth_available_in_network (cur->solver_information))) @@ -948,11 +950,7 @@ GAS_proportional_get_preferred_address (void *solver, cur->active = GNUNET_YES; addresse_increment(s, net_cur, GNUNET_NO, GNUNET_YES); - if (GNUNET_NO == s->bulk_lock) - distribute_bandwidth_in_network (s, net_cur, cur); - else - s->bulk_changes ++; - + distribute_bandwidth_in_network (s, net_cur, cur); return cur; } @@ -1037,10 +1035,7 @@ GAS_proportional_address_delete (void *solver, address->active = GNUNET_NO; if (GNUNET_SYSERR == addresse_decrement (s, net, GNUNET_NO, GNUNET_YES)) GNUNET_break (0); - if (GNUNET_NO == s->bulk_lock) - distribute_bandwidth_in_network (s, net, NULL); - else - s->bulk_changes ++; + distribute_bandwidth_in_network (s, net, NULL); } LOG (GNUNET_ERROR_TYPE_DEBUG, "After deleting address now total %u and active %u addresses in network `%s'\n", net->total_addresses, @@ -1082,11 +1077,11 @@ GAS_proportional_bulk_stop (void *solver) return; } s->bulk_lock --; - if ((0 == s->bulk_lock) && (s->bulk_changes)) + if ((0 == s->bulk_lock) && (0 < s->bulk_requests)) { LOG (GNUNET_ERROR_TYPE_ERROR, "No lock pending, recalculating\n"); distribute_bandwidth_in_all_networks (s); - s->bulk_changes = 0; + s->bulk_requests = 0; } } @@ -1194,10 +1189,7 @@ GAS_proportional_address_update (void *solver, /* Suggest updated address */ address->active = GNUNET_YES; addresse_increment (s, new_net, GNUNET_NO, GNUNET_YES); - if (GNUNET_NO == s->bulk_lock) - distribute_bandwidth_in_network (solver, new_net, NULL); - else - s->bulk_changes ++; + distribute_bandwidth_in_network (solver, new_net, NULL); } else {