X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7e2f1b12f4459f77318e5d664317473e35aeb473..308bf9e4897e3606f017559cefabd29fb7eaec03:/examples/s4u/app-bittorrent/s4u-tracker.cpp diff --git a/examples/s4u/app-bittorrent/s4u-tracker.cpp b/examples/s4u/app-bittorrent/s4u-tracker.cpp index b7bd4cd05f..f3a1e67fac 100644 --- a/examples/s4u/app-bittorrent/s4u-tracker.cpp +++ b/examples/s4u/app-bittorrent/s4u-tracker.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2019. The SimGrid Team. +/* Copyright (c) 2012-2020. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -6,7 +6,6 @@ #include "s4u-tracker.hpp" #include -#include XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_bt_tracker, "Messages specific for the tracker"); @@ -18,12 +17,10 @@ Tracker::Tracker(std::vector args) try { deadline = std::stod(args[1]); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid deadline:") + args[1].c_str()); + throw std::invalid_argument("Invalid deadline:" + args[1]); } xbt_assert(deadline > 0, "Wrong deadline supplied"); - stream = simgrid::s4u::this_actor::get_host()->extension()->getStream(); - mailbox = simgrid::s4u::Mailbox::by_name(TRACKER_MAILBOX); XBT_INFO("Tracker launched."); @@ -32,37 +29,36 @@ Tracker::Tracker(std::vector args) void Tracker::operator()() { simgrid::s4u::CommPtr comm = nullptr; - void* received = nullptr; + TrackerQuery* query = nullptr; while (simgrid::s4u::Engine::get_clock() < deadline) { if (comm == nullptr) - comm = mailbox->get_async(&received); + comm = mailbox->get_async(&query); if (comm->test()) { // Retrieve the data sent by the peer. - xbt_assert(received != nullptr); - TrackerQuery* tq = static_cast(received); + xbt_assert(query != nullptr); // Add the peer to our peer list, if not already known. - if (known_peers.find(tq->getPeerId()) == known_peers.end()) { - known_peers.insert(tq->getPeerId()); + if (known_peers.find(query->getPeerId()) == known_peers.end()) { + known_peers.insert(query->getPeerId()); } // Sending back peers to the requesting peer - TrackerAnswer* ta = new TrackerAnswer(TRACKER_QUERY_INTERVAL); + auto* answer = new TrackerAnswer(TRACKER_QUERY_INTERVAL); std::set::iterator next_peer; - int nb_known_peers = known_peers.size(); + int nb_known_peers = static_cast(known_peers.size()); int max_tries = std::min(MAXIMUM_PEERS, nb_known_peers); int tried = 0; while (tried < max_tries) { do { next_peer = known_peers.begin(); - std::advance(next_peer, RngStream_RandInt(stream, 0, nb_known_peers - 1)); - } while (ta->getPeers().find(*next_peer) != ta->getPeers().end()); - ta->addPeer(*next_peer); + std::advance(next_peer, random.uniform_int(0, nb_known_peers - 1)); + } while (answer->getPeers().find(*next_peer) != answer->getPeers().end()); + answer->addPeer(*next_peer); tried++; } - tq->getReturnMailbox()->put_init(ta, TRACKER_COMM_SIZE)->detach(); + query->getReturnMailbox()->put_init(answer, TRACKER_COMM_SIZE)->detach(); - delete tq; + delete query; comm = nullptr; } else { simgrid::s4u::this_actor::sleep_for(1);