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");
/* 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;
}
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;
}
}
/* 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;
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 */
/**
* Number of changes while solver was locked
*/
- int bulk_changes;
+ int bulk_requests;
/**
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);
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);
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);
}
/**
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)))
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;
}
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,
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;
}
}
/* 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
{