aboutsummaryrefslogtreecommitdiff
path: root/src/ats/gnunet-service-ats-solver_proportional.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-07-02 15:08:37 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-07-02 15:08:37 +0000
commit1524472d6ceafe79495a81fc9313fa981495a3b1 (patch)
treedeb6e9502e700356192e4638ad934bb168d68e3d /src/ats/gnunet-service-ats-solver_proportional.c
parentf1f81d41ae55f0107d4f2ac752544b3dce7d2214 (diff)
downloadgnunet-1524472d6ceafe79495a81fc9313fa981495a3b1.tar.gz
gnunet-1524472d6ceafe79495a81fc9313fa981495a3b1.zip
finished buld support
Diffstat (limited to 'src/ats/gnunet-service-ats-solver_proportional.c')
-rw-r--r--src/ats/gnunet-service-ats-solver_proportional.c40
1 files changed, 16 insertions, 24 deletions
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
251 /** 251 /**
252 * Number of changes while solver was locked 252 * Number of changes while solver was locked
253 */ 253 */
254 int bulk_changes; 254 int bulk_requests;
255 255
256 256
257 /** 257 /**
@@ -416,6 +416,13 @@ distribute_bandwidth_in_network (struct GAS_PROPORTIONAL_Handle *s,
416 unsigned long long assigned_quota_out = 0; 416 unsigned long long assigned_quota_out = 0;
417 struct AddressWrapper *cur; 417 struct AddressWrapper *cur;
418 418
419
420 if (GNUNET_YES == s->bulk_lock)
421 {
422 s->bulk_requests++;
423 return;
424 }
425
419 LOG (GNUNET_ERROR_TYPE_DEBUG, 426 LOG (GNUNET_ERROR_TYPE_DEBUG,
420 "Recalculate quota for network type `%s' for %u addresses (in/out): %llu/%llu \n", 427 "Recalculate quota for network type `%s' for %u addresses (in/out): %llu/%llu \n",
421 net->desc, net->active_addresses, net->total_quota_in, net->total_quota_in); 428 net->desc, net->active_addresses, net->total_quota_in, net->total_quota_in);
@@ -654,6 +661,7 @@ static void
654distribute_bandwidth_in_all_networks (struct GAS_PROPORTIONAL_Handle *s) 661distribute_bandwidth_in_all_networks (struct GAS_PROPORTIONAL_Handle *s)
655{ 662{
656 int i; 663 int i;
664
657 for (i = 0; i < s->networks; i++) 665 for (i = 0; i < s->networks; i++)
658 distribute_bandwidth_in_network (s, &s->network_entries[i], NULL); 666 distribute_bandwidth_in_network (s, &s->network_entries[i], NULL);
659 667
@@ -865,10 +873,7 @@ GAS_proportional_address_change_preference (void *solver,
865 GNUNET_assert (NULL != solver); 873 GNUNET_assert (NULL != solver);
866 GNUNET_assert (NULL != peer); 874 GNUNET_assert (NULL != peer);
867 875
868 if (GNUNET_NO == s->bulk_lock) 876 distribute_bandwidth_in_all_networks (s);
869 distribute_bandwidth_in_all_networks (s);
870 else
871 s->bulk_changes ++;
872} 877}
873 878
874/** 879/**
@@ -934,10 +939,7 @@ GAS_proportional_get_preferred_address (void *solver,
934 s->bw_changed (s->bw_changed_cls, prev); /* notify about bw change, REQUIRED? */ 939 s->bw_changed (s->bw_changed_cls, prev); /* notify about bw change, REQUIRED? */
935 if (GNUNET_SYSERR == addresse_decrement (s, net_prev, GNUNET_NO, GNUNET_YES)) 940 if (GNUNET_SYSERR == addresse_decrement (s, net_prev, GNUNET_NO, GNUNET_YES))
936 GNUNET_break (0); 941 GNUNET_break (0);
937 if (GNUNET_NO == s->bulk_lock) 942 distribute_bandwidth_in_network (s, net_prev, NULL);
938 distribute_bandwidth_in_network (s, net_prev, NULL);
939 else
940 s->bulk_changes ++;
941 } 943 }
942 944
943 if (GNUNET_NO == (is_bandwidth_available_in_network (cur->solver_information))) 945 if (GNUNET_NO == (is_bandwidth_available_in_network (cur->solver_information)))
@@ -948,11 +950,7 @@ GAS_proportional_get_preferred_address (void *solver,
948 950
949 cur->active = GNUNET_YES; 951 cur->active = GNUNET_YES;
950 addresse_increment(s, net_cur, GNUNET_NO, GNUNET_YES); 952 addresse_increment(s, net_cur, GNUNET_NO, GNUNET_YES);
951 if (GNUNET_NO == s->bulk_lock) 953 distribute_bandwidth_in_network (s, net_cur, cur);
952 distribute_bandwidth_in_network (s, net_cur, cur);
953 else
954 s->bulk_changes ++;
955
956 return cur; 954 return cur;
957} 955}
958 956
@@ -1037,10 +1035,7 @@ GAS_proportional_address_delete (void *solver,
1037 address->active = GNUNET_NO; 1035 address->active = GNUNET_NO;
1038 if (GNUNET_SYSERR == addresse_decrement (s, net, GNUNET_NO, GNUNET_YES)) 1036 if (GNUNET_SYSERR == addresse_decrement (s, net, GNUNET_NO, GNUNET_YES))
1039 GNUNET_break (0); 1037 GNUNET_break (0);
1040 if (GNUNET_NO == s->bulk_lock) 1038 distribute_bandwidth_in_network (s, net, NULL);
1041 distribute_bandwidth_in_network (s, net, NULL);
1042 else
1043 s->bulk_changes ++;
1044 } 1039 }
1045 LOG (GNUNET_ERROR_TYPE_DEBUG, "After deleting address now total %u and active %u addresses in network `%s'\n", 1040 LOG (GNUNET_ERROR_TYPE_DEBUG, "After deleting address now total %u and active %u addresses in network `%s'\n",
1046 net->total_addresses, 1041 net->total_addresses,
@@ -1082,11 +1077,11 @@ GAS_proportional_bulk_stop (void *solver)
1082 return; 1077 return;
1083 } 1078 }
1084 s->bulk_lock --; 1079 s->bulk_lock --;
1085 if ((0 == s->bulk_lock) && (s->bulk_changes)) 1080 if ((0 == s->bulk_lock) && (0 < s->bulk_requests))
1086 { 1081 {
1087 LOG (GNUNET_ERROR_TYPE_ERROR, "No lock pending, recalculating\n"); 1082 LOG (GNUNET_ERROR_TYPE_ERROR, "No lock pending, recalculating\n");
1088 distribute_bandwidth_in_all_networks (s); 1083 distribute_bandwidth_in_all_networks (s);
1089 s->bulk_changes = 0; 1084 s->bulk_requests = 0;
1090 } 1085 }
1091} 1086}
1092 1087
@@ -1194,10 +1189,7 @@ GAS_proportional_address_update (void *solver,
1194 /* Suggest updated address */ 1189 /* Suggest updated address */
1195 address->active = GNUNET_YES; 1190 address->active = GNUNET_YES;
1196 addresse_increment (s, new_net, GNUNET_NO, GNUNET_YES); 1191 addresse_increment (s, new_net, GNUNET_NO, GNUNET_YES);
1197 if (GNUNET_NO == s->bulk_lock) 1192 distribute_bandwidth_in_network (solver, new_net, NULL);
1198 distribute_bandwidth_in_network (solver, new_net, NULL);
1199 else
1200 s->bulk_changes ++;
1201 } 1193 }
1202 else 1194 else
1203 { 1195 {