-/* Copyright (c) 2012-2015. The SimGrid Team.
+/* Copyright (c) 2012-2017. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
*/
int tracker(int argc, char *argv[])
{
- int i;
-
- RngStream stream = (RngStream) MSG_host_get_property_value(MSG_host_self(), "stream");
//Checking arguments
xbt_assert(argc == 2, "Wrong number of arguments for the tracker.");
//Retrieving end time
double deadline = xbt_str_parse_double(argv[1],"Invalid deadline: %s");
xbt_assert(deadline > 0, "Wrong deadline supplied");
+
+ RngStream stream = (RngStream) MSG_host_get_data(MSG_host_self());
//Building peers array
xbt_dynar_t peers_list = xbt_dynar_new(sizeof(int), NULL);
//Retrieve the data sent by the peer.
tracker_task_data_t data = MSG_task_get_data(task_received);
//Add the peer to our peer list.
- if (!is_in_list(peers_list, data->peer_id)) {
+ if (is_in_list(peers_list, data->peer_id) == 0) {
xbt_dynar_push_as(peers_list, int, data->peer_id);
}
//Sending peers to the peer
int next_peer;
int peers_length = xbt_dynar_length(peers_list);
- for (i = 0; i < MAXIMUM_PAIRS && i < peers_length; i++) {
+ for (int i = 0; i < MAXIMUM_PAIRS && i < peers_length; i++) {
do {
- next_peer =
- xbt_dynar_get_as(peers_list,
- RngStream_RandInt(stream, 0, peers_length - 1),
- int);
+ next_peer = xbt_dynar_get_as(peers_list, RngStream_RandInt(stream, 0, peers_length - 1), int);
} while (is_in_list(data->peers, next_peer));
xbt_dynar_push_as(data->peers, int, next_peer);
}
* Build a new task for the tracker.
* @param issuer_host_name Hostname of the issuer. For debugging purposes
*/
-tracker_task_data_t tracker_task_data_new(const char *issuer_host_name,
- const char *mailbox, int peer_id,
- int uploaded, int downloaded,
- int left)
+tracker_task_data_t tracker_task_data_new(const char *issuer_host_name, const char *mailbox, int peer_id,
+ int uploaded, int downloaded, int left)
{
tracker_task_data_t task = xbt_new(s_tracker_task_data_t, 1);
}
/**
- * Free a tracker task that has not succefully been sent.
+ * Free a tracker task that has not successfully been sent.
* @param data Task to free
*/
static void task_free(void *data)
*/
int is_in_list(xbt_dynar_t peers, int id)
{
- unsigned i;
- int elm;
- xbt_dynar_foreach(peers, i, elm) {
- if (elm == id) {
- return 1;
- }
- }
- return 0;
+ return xbt_dynar_member(peers, &id);
}