X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0746edb369906f57c331d9336bf85ae91094ad51..0bfafcab47ae9cd7856bd8d129404c33079d6afe:/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 deleted file mode 100644 index 8f36504b45..0000000000 --- a/examples/s4u/app-bittorrent/s4u-tracker.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright (c) 2012-2021. The SimGrid Team. - * All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -#include "s4u-tracker.hpp" -#include - -XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_bt_tracker, "Messages specific for the tracker"); - -Tracker::Tracker(std::vector args) -{ - // Checking arguments - xbt_assert(args.size() == 2, "Wrong number of arguments for the tracker."); - // Retrieving end time - try { - deadline = std::stod(args[1]); - } catch (const std::invalid_argument&) { - throw std::invalid_argument("Invalid deadline:" + args[1]); - } - xbt_assert(deadline > 0, "Wrong deadline supplied"); - - mailbox = simgrid::s4u::Mailbox::by_name(TRACKER_MAILBOX); - - XBT_INFO("Tracker launched."); -} - -void Tracker::operator()() -{ - simgrid::s4u::CommPtr comm = nullptr; - TrackerQuery* query = nullptr; - while (simgrid::s4u::Engine::get_clock() < deadline) { - if (comm == nullptr) - comm = mailbox->get_async(&query); - if (comm->test()) { - // Retrieve the data sent by the peer. - xbt_assert(query != nullptr); - - // Add the peer to our peer list, if not already known. - known_peers.emplace(query->getPeerId()); - - // Sending back peers to the requesting peer - auto* answer = new TrackerAnswer(TRACKER_QUERY_INTERVAL); - std::set::iterator next_peer; - 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, random.uniform_int(0, nb_known_peers - 1)); - } while (answer->getPeers().find(*next_peer) != answer->getPeers().end()); - answer->addPeer(*next_peer); - tried++; - } - query->getReturnMailbox()->put_init(answer, TRACKER_COMM_SIZE)->detach(); - - delete query; - comm = nullptr; - } else { - simgrid::s4u::this_actor::sleep_for(1); - } - } - XBT_INFO("Tracker is leaving"); -}