/*
This file is part of GNUnet.
- (C) 2010,2011 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2010,2011 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
* @file ats/perf_ats_solver.c
GNUNET_free_non_null (ph.iterations_results);
GAS_normalization_stop ();
+ GAS_preference_done ();
ret = res;
}
}
-const double *
+static const double *
get_preferences_cb (void *cls, const struct GNUNET_PeerIdentity *id)
{
- return GAS_normalization_get_preferences_by_peer (NULL, id);
-}
-
-
-const double *
-get_property_cb (void *cls, const struct ATS_Address *address)
-{
- return GAS_normalization_get_properties (NULL,
- address);
+ return GAS_preference_get_by_peer (NULL, id);
}
}
+static unsigned int
+get_connectivity_cb (void *cls,
+ const struct GNUNET_PeerIdentity *peer)
+{
+ return GNUNET_CONTAINER_multipeermap_contains (ph.addresses,
+ peer);
+}
+
+
/**
* Evaluate average results for all iterations
*/
GNUNET_CONTAINER_multipeermap_remove (ph.addresses,
pid,
cur));
- ph.sf->s_del (ph.sf->cls, cur, GNUNET_NO);
+ ph.sf->s_del (ph.sf->cls, cur);
GNUNET_free_non_null (cur->atsi);
GNUNET_free (cur);
return GNUNET_OK;
&do_delete_address,
NULL);
}
+ if (GNUNET_NO == ph.bulk_running)
+ {
+ ph.sf->s_bulk_stop (ph.sf->cls);
+ ph.bulk_running = GNUNET_NO;
+ }
GNUNET_log(GNUNET_ERROR_TYPE_INFO,
"Iteration done\n");
if (0 == strcmp(solver, "proportional"))
{
- ph.ats_mode = MODE_PROPORTIONAL;
ph.ats_string = "proportional";
}
else if (0 == strcmp(solver, "mlp"))
{
- ph.ats_mode = MODE_MLP;
ph.ats_string = "mlp";
}
else if ((0 == strcmp(solver, "ril")))
{
- ph.ats_mode = MODE_RIL;
ph.ats_string = "ril";
}
else
ph.addresses = GNUNET_CONTAINER_multipeermap_create (128, GNUNET_NO);
ph.env.addresses = ph.addresses;
ph.env.bandwidth_changed_cb = bandwidth_changed_cb;
+ ph.env.get_connectivity = &get_connectivity_cb;
ph.env.get_preferences = &get_preferences_cb;
- ph.env.get_property = &get_property_cb;
ph.env.network_count = GNUNET_ATS_NetworkTypeCount;
ph.env.info_cb = &solver_info_cb;
{
ph.env.out_quota[c] = quotas_out[c];
ph.env.in_quota[c] = quotas_in[c];
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Loading network quotas: `%s' %llu %llu \n",
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Loading network quotas: `%s' %llu %llu \n",
GNUNET_ATS_print_network_type (c),
ph.env.out_quota[c],
ph.env.in_quota[c]);
}
GAS_normalization_start ();
+ GAS_preference_init ();
- GNUNET_asprintf (&plugin, "libgnunet_plugin_ats_%s", ph.ats_string);
- GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Initializing solver `%s'\n"), ph.ats_string);
+ GNUNET_asprintf (&plugin,
+ "libgnunet_plugin_ats_%s",
+ ph.ats_string);
+ GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ _("Initializing solver `%s'\n"),
+ ph.ats_string);
if (NULL == (ph.sf = GNUNET_PLUGIN_load (plugin, &ph.env)))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to initialize solver `%s'!\n"), plugin);
+ _("Failed to initialize solver `%s'!\n"),
+ plugin);
ret = 1;
return;
}
/* Do the benchmark */
for (ph.current_iteration = 1; ph.current_iteration <= ph.total_iterations; ph.current_iteration++)
{
- fprintf (stderr, "Iteration %u of %u starting\n", ph.current_iteration, ph.total_iterations);
+ fprintf (stderr,
+ "Iteration %u of %u starting\n",
+ ph.current_iteration,
+ ph.total_iterations);
perf_run_iteration ();
evaluate (ph.current_iteration);
- fprintf (stderr, "Iteration %u of %u done\n", ph.current_iteration, ph.total_iterations);
+ fprintf (stderr,
+ "Iteration %u of %u done\n",
+ ph.current_iteration,
+ ph.total_iterations);
}
if (ph.create_datafile)
write_all_iterations ();
/* Unload solver*/
- GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Unloading solver `%s'\n"), ph.ats_string);
+ GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ _("Unloading solver `%s'\n"),
+ ph.ats_string);
GNUNET_PLUGIN_unload (plugin, ph.sf);
ph.sf = NULL;
GNUNET_free (plugin);
GNUNET_STATISTICS_destroy (ph.stat, GNUNET_NO);
}
+
/**
* Main function of the benchmark
*