diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-02-17 15:32:23 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-02-17 15:32:23 +0000 |
commit | 847f1b045f087dac3ed2b8989a0512610b58b00d (patch) | |
tree | f6bb4b5770545082c59d1cb369b77154fd76299c /src/ats/gnunet-service-ats_addresses_mlp.c | |
parent | dde12b107415d22cf0dbe44e2a0b88a974b59ae0 (diff) | |
download | gnunet-847f1b045f087dac3ed2b8989a0512610b58b00d.tar.gz gnunet-847f1b045f087dac3ed2b8989a0512610b58b00d.zip |
- changes to ats
Diffstat (limited to 'src/ats/gnunet-service-ats_addresses_mlp.c')
-rw-r--r-- | src/ats/gnunet-service-ats_addresses_mlp.c | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/src/ats/gnunet-service-ats_addresses_mlp.c b/src/ats/gnunet-service-ats_addresses_mlp.c index 50d1e42a2..0c9e0b328 100644 --- a/src/ats/gnunet-service-ats_addresses_mlp.c +++ b/src/ats/gnunet-service-ats_addresses_mlp.c | |||
@@ -1026,17 +1026,20 @@ GAS_mlp_solve_problem (struct GAS_MLP_Handle *mlp) | |||
1026 | mlpi = a->mlp_information; | 1026 | mlpi = a->mlp_information; |
1027 | 1027 | ||
1028 | b = glp_mip_col_val(mlp->prob, mlpi->c_b); | 1028 | b = glp_mip_col_val(mlp->prob, mlpi->c_b); |
1029 | n = glp_mip_col_val(mlp->prob, mlpi->c_n); | 1029 | mlpi->b = b; |
1030 | 1030 | ||
1031 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tAddress %f %f\n", n, b); | 1031 | n = glp_mip_col_val(mlp->prob, mlpi->c_n); |
1032 | if (n == 1.0) | ||
1033 | mlpi->n = GNUNET_YES; | ||
1034 | else | ||
1035 | mlpi->n = GNUNET_NO; | ||
1032 | 1036 | ||
1037 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tAddress %s %f\n", | ||
1038 | (n == 1.0) ? "[x]" : "[ ]", b); | ||
1033 | } | 1039 | } |
1034 | 1040 | ||
1035 | } | 1041 | } |
1036 | 1042 | ||
1037 | |||
1038 | |||
1039 | |||
1040 | if (mlp->mlp_task != GNUNET_SCHEDULER_NO_TASK) | 1043 | if (mlp->mlp_task != GNUNET_SCHEDULER_NO_TASK) |
1041 | { | 1044 | { |
1042 | GNUNET_SCHEDULER_cancel(mlp->mlp_task); | 1045 | GNUNET_SCHEDULER_cancel(mlp->mlp_task); |
@@ -1416,6 +1419,41 @@ GAS_mlp_address_delete (struct GAS_MLP_Handle *mlp, struct GNUNET_CONTAINER_Mult | |||
1416 | } | 1419 | } |
1417 | } | 1420 | } |
1418 | 1421 | ||
1422 | static int | ||
1423 | mlp_get_preferred_address_it (void *cls, const GNUNET_HashCode * key, void *value) | ||
1424 | { | ||
1425 | |||
1426 | struct ATS_Address **aa = (struct ATS_Address **)cls; | ||
1427 | struct ATS_Address *addr = value; | ||
1428 | struct MLP_information *mlpi = addr->mlp_information; | ||
1429 | if (mlpi->n == GNUNET_YES) | ||
1430 | { | ||
1431 | *aa = addr; | ||
1432 | return GNUNET_NO; | ||
1433 | } | ||
1434 | return GNUNET_YES; | ||
1435 | } | ||
1436 | |||
1437 | |||
1438 | /** | ||
1439 | * Get the preferred address for a specific peer | ||
1440 | * | ||
1441 | * @param mlp the MLP Handle | ||
1442 | * @param peer the peer | ||
1443 | * @return suggested address | ||
1444 | */ | ||
1445 | struct ATS_Address * | ||
1446 | GAS_mlp_get_preferred_address (struct GAS_MLP_Handle *mlp, | ||
1447 | struct GNUNET_CONTAINER_MultiHashMap * addresses, | ||
1448 | const struct GNUNET_PeerIdentity *peer) | ||
1449 | { | ||
1450 | struct ATS_Address * aa = NULL; | ||
1451 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Getting preferred address for `%s'\n", GNUNET_i2s (peer)); | ||
1452 | GNUNET_CONTAINER_multihashmap_get_multiple(addresses, &peer->hashPubKey, mlp_get_preferred_address_it, &aa); | ||
1453 | return aa; | ||
1454 | } | ||
1455 | |||
1456 | |||
1419 | /** | 1457 | /** |
1420 | * Changes the preferences for a peer in the MLP problem | 1458 | * Changes the preferences for a peer in the MLP problem |
1421 | * | 1459 | * |