diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2013-07-02 15:08:37 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2013-07-02 15:08:37 +0000 |
commit | 1524472d6ceafe79495a81fc9313fa981495a3b1 (patch) | |
tree | deb6e9502e700356192e4638ad934bb168d68e3d /src/ats | |
parent | f1f81d41ae55f0107d4f2ac752544b3dce7d2214 (diff) | |
download | gnunet-1524472d6ceafe79495a81fc9313fa981495a3b1.tar.gz gnunet-1524472d6ceafe79495a81fc9313fa981495a3b1.zip |
finished buld support
Diffstat (limited to 'src/ats')
-rw-r--r-- | src/ats/gnunet-service-ats-solver_mlp.c | 19 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats-solver_mlp.h | 2 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats-solver_proportional.c | 40 |
3 files changed, 28 insertions, 33 deletions
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 | |||
953 | struct GNUNET_TIME_Relative duration_mlp; | 953 | struct GNUNET_TIME_Relative duration_mlp; |
954 | GNUNET_assert (NULL != solver); | 954 | GNUNET_assert (NULL != solver); |
955 | 955 | ||
956 | if (GNUNET_YES == mlp->bulk_lock) | ||
957 | { | ||
958 | mlp->bulk_request ++; | ||
959 | return GNUNET_NO; | ||
960 | } | ||
961 | |||
956 | if ((GNUNET_NO == mlp->mlp_prob_changed) && (GNUNET_NO == mlp->mlp_prob_updated)) | 962 | if ((GNUNET_NO == mlp->mlp_prob_changed) && (GNUNET_NO == mlp->mlp_prob_updated)) |
957 | { | 963 | { |
958 | LOG (GNUNET_ERROR_TYPE_DEBUG, "No changes to problem\n"); | 964 | LOG (GNUNET_ERROR_TYPE_DEBUG, "No changes to problem\n"); |
@@ -1356,6 +1362,7 @@ GAS_mlp_address_update (void *solver, | |||
1356 | 1362 | ||
1357 | /* Problem size changed: new address for peer with pending request */ | 1363 | /* Problem size changed: new address for peer with pending request */ |
1358 | mlp->mlp_prob_updated = GNUNET_YES; | 1364 | mlp->mlp_prob_updated = GNUNET_YES; |
1365 | |||
1359 | if (GNUNET_YES == mlp->mlp_auto_solve) | 1366 | if (GNUNET_YES == mlp->mlp_auto_solve) |
1360 | GAS_mlp_solve_problem (solver, addresses); | 1367 | GAS_mlp_solve_problem (solver, addresses); |
1361 | return; | 1368 | return; |
@@ -1538,10 +1545,10 @@ GAS_mlp_bulk_stop (void *solver) | |||
1538 | } | 1545 | } |
1539 | s->bulk_lock --; | 1546 | s->bulk_lock --; |
1540 | 1547 | ||
1541 | if (0 < s->bulk_changes) | 1548 | if (0 < s->bulk_request) |
1542 | { | 1549 | { |
1543 | GAS_mlp_solve_problem (solver, s->addresses); | 1550 | GAS_mlp_solve_problem (solver, s->addresses); |
1544 | s->bulk_changes = 0; | 1551 | s->bulk_request= 0; |
1545 | } | 1552 | } |
1546 | } | 1553 | } |
1547 | 1554 | ||
@@ -1613,12 +1620,6 @@ GAS_mlp_address_change_preference (void *solver, | |||
1613 | 1620 | ||
1614 | /* Problem size changed: new address for peer with pending request */ | 1621 | /* Problem size changed: new address for peer with pending request */ |
1615 | mlp->mlp_prob_updated = GNUNET_YES; | 1622 | mlp->mlp_prob_updated = GNUNET_YES; |
1616 | if (GNUNET_YES == mlp->bulk_lock) | ||
1617 | { | ||
1618 | mlp->bulk_changes++; | ||
1619 | return; | ||
1620 | } | ||
1621 | |||
1622 | if (GNUNET_YES == mlp->mlp_auto_solve) | 1623 | if (GNUNET_YES == mlp->mlp_auto_solve) |
1623 | GAS_mlp_solve_problem (solver, addresses); | 1624 | GAS_mlp_solve_problem (solver, addresses); |
1624 | return; | 1625 | return; |
@@ -1908,6 +1909,8 @@ GAS_mlp_init (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
1908 | mlp->mlp_prob_updated = GNUNET_NO; | 1909 | mlp->mlp_prob_updated = GNUNET_NO; |
1909 | mlp->mlp_auto_solve = GNUNET_YES; | 1910 | mlp->mlp_auto_solve = GNUNET_YES; |
1910 | mlp->peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); | 1911 | mlp->peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); |
1912 | mlp->bulk_request = 0; | ||
1913 | mlp->bulk_lock = 0; | ||
1911 | 1914 | ||
1912 | /* Setup GLPK */ | 1915 | /* Setup GLPK */ |
1913 | /* Redirect GLPK output to GNUnet logging */ | 1916 | /* 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 | |||
254 | /** | 254 | /** |
255 | * Number of changes while solver was locked | 255 | * Number of changes while solver was locked |
256 | */ | 256 | */ |
257 | int bulk_changes; | 257 | int bulk_request; |
258 | 258 | ||
259 | /** | 259 | /** |
260 | * GLPK LP control parameter | 260 | * 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 | |||
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 | |||
654 | distribute_bandwidth_in_all_networks (struct GAS_PROPORTIONAL_Handle *s) | 661 | distribute_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 | { |