Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Removing RngStream
authorYann Duplouy <duplouy@crans.org>
Sat, 19 Oct 2019 16:53:02 +0000 (18:53 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 19 Oct 2019 16:53:02 +0000 (18:53 +0200)
26 files changed:
COPYING
MANIFEST.in
examples/deprecated/java/app/bittorrent/Main.java
examples/deprecated/java/app/bittorrent/Peer.java
examples/deprecated/java/app/bittorrent/Tracker.java
examples/s4u/app-bittorrent/s4u-bittorrent.cpp
examples/s4u/app-bittorrent/s4u-bittorrent.hpp
examples/s4u/app-bittorrent/s4u-peer.cpp
examples/s4u/app-bittorrent/s4u-peer.hpp
examples/s4u/app-bittorrent/s4u-tracker.cpp
examples/s4u/app-bittorrent/s4u-tracker.hpp
examples/s4u/dht-chord/s4u-dht-chord-node.cpp
examples/s4u/dht-chord/s4u-dht-chord.cpp
examples/s4u/dht-chord/s4u-dht-chord.hpp
examples/s4u/dht-chord/s4u-dht-chord.tesh
include/xbt/RngStream.h [deleted file]
sonar-project.properties
src/bindings/java/jmsg_rngstream.cpp [deleted file]
src/bindings/java/jmsg_rngstream.h [deleted file]
src/bindings/java/org/simgrid/msg/RngStream.java [deleted file]
src/xbt/RngStream.c [deleted file]
teshsuite/msg/app-bittorrent/bittorrent-peer.c
teshsuite/msg/app-bittorrent/bittorrent-peer.h
teshsuite/msg/app-bittorrent/bittorrent.c
teshsuite/msg/app-bittorrent/tracker.c
tools/cmake/DefinePackages.cmake

diff --git a/COPYING b/COPYING
index ca84049..5eeebe3 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -64,11 +64,6 @@ License: other
  product, or process disclosed, or represents that its use would not infringe
  privately owned rights.
 
  product, or process disclosed, or represents that its use would not infringe
  privately owned rights.
 
-Files: src/xbt/RngStream.c include/xbt/RngStream.h
-Copyright: 2001 Pierre L'Ecuyer, University of Montreal
-License: GPL-2+ and LGPL-2.1
-Comment: The author granted us the right to distribute this files under the LGPL-2.1 as long as it is bundled with SimGrid.
-
 Files:
  src/simdag/dax_dtd.c
  src/simdag/dax_dtd.h
 Files:
  src/simdag/dax_dtd.c
  src/simdag/dax_dtd.h
index 85d7b34..7858f39 100644 (file)
@@ -1986,7 +1986,6 @@ include include/smpi/smpi_helpers_internal.h
 include include/smpi/smpi_main.h
 include include/xbt.h
 include include/xbt/Extendable.hpp
 include include/smpi/smpi_main.h
 include include/xbt.h
 include include/xbt/Extendable.hpp
-include include/xbt/RngStream.h
 include include/xbt/asserts.h
 include include/xbt/automaton.h
 include include/xbt/automaton.hpp
 include include/xbt/asserts.h
 include include/xbt/automaton.h
 include include/xbt/automaton.hpp
@@ -2063,7 +2062,6 @@ include src/bindings/java/org/simgrid/msg/Mutex.java
 include src/bindings/java/org/simgrid/msg/Process.java
 include src/bindings/java/org/simgrid/msg/ProcessKilledError.java
 include src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java
 include src/bindings/java/org/simgrid/msg/Process.java
 include src/bindings/java/org/simgrid/msg/ProcessKilledError.java
 include src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java
-include src/bindings/java/org/simgrid/msg/RngStream.java
 include src/bindings/java/org/simgrid/msg/Semaphore.java
 include src/bindings/java/org/simgrid/msg/Storage.java
 include src/bindings/java/org/simgrid/msg/StorageNotFoundException.java
 include src/bindings/java/org/simgrid/msg/Semaphore.java
 include src/bindings/java/org/simgrid/msg/Storage.java
 include src/bindings/java/org/simgrid/msg/StorageNotFoundException.java
@@ -2552,7 +2550,6 @@ include src/surf/xml/simgrid_dtd.h
 include src/surf/xml/surfxml_parseplatf.cpp
 include src/surf/xml/surfxml_sax_cb.cpp
 include src/xbt/OsSemaphore.hpp
 include src/surf/xml/surfxml_parseplatf.cpp
 include src/surf/xml/surfxml_sax_cb.cpp
 include src/xbt/OsSemaphore.hpp
-include src/xbt/RngStream.c
 include src/xbt/automaton/automaton.c
 include src/xbt/automaton/automaton_lexer.yy.c
 include src/xbt/automaton/automatonparse_promela.c
 include src/xbt/automaton/automaton.c
 include src/xbt/automaton/automaton_lexer.yy.c
 include src/xbt/automaton/automatonparse_promela.c
index eeef12d..11773d4 100644 (file)
@@ -6,7 +6,6 @@
 package app.bittorrent;
 
 import org.simgrid.msg.Msg;
 package app.bittorrent;
 
 import org.simgrid.msg.Msg;
-import org.simgrid.msg.RngStream;
 
 class Main{
   private Main() {
 
 class Main{
   private Main() {
@@ -14,9 +13,6 @@ class Main{
   }
 
   public static void main(String[] args) {
   }
 
   public static void main(String[] args) {
-    int[] seed = { 12345, 12345, 12345, 12345, 12345, 12345 };
-    RngStream.setPackageSeed(seed);
-
     Msg.init(args);
     if(args.length < 2) {
       Msg.info("Usage   : Bittorrent platform_file deployment_file");
     Msg.init(args);
     if(args.length < 2) {
       Msg.info("Usage   : Bittorrent platform_file deployment_file");
index ab394a0..17ba118 100644 (file)
@@ -9,20 +9,20 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map.Entry;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map.Entry;
+import java.util.Random;
 
 import org.simgrid.msg.Msg;
 import org.simgrid.msg.Comm;
 import org.simgrid.msg.Host;
 import org.simgrid.msg.Task;
 import org.simgrid.msg.Process;
 
 import org.simgrid.msg.Msg;
 import org.simgrid.msg.Comm;
 import org.simgrid.msg.Host;
 import org.simgrid.msg.Task;
 import org.simgrid.msg.Process;
-import org.simgrid.msg.RngStream;
 import org.simgrid.msg.MsgException;
 
 public class Peer extends Process {
 import org.simgrid.msg.MsgException;
 
 public class Peer extends Process {
+  Random rand = new Random();
   protected int round = 0;
   protected double beginReceiveTime;
   protected double deadline;
   protected int round = 0;
   protected double beginReceiveTime;
   protected double deadline;
-  protected static RngStream stream = new RngStream();
   protected int id;
   protected String mailbox;
   protected String mailboxTracker;
   protected int id;
   protected String mailbox;
   protected String mailboxTracker;
@@ -384,7 +384,7 @@ public class Peer extends Process {
 
     //TODO: trivial min algorithm when pieces >= 3
     do {
 
     //TODO: trivial min algorithm when pieces >= 3
     do {
-      currentPiece = stream.randInt(0,Common.FILE_PIECES - 1);
+      currentPiece = rand.nextInt(Common.FILE_PIECES);
     } while (!(bitfield[currentPiece] == '0' && !currentPieces.contains(currentPiece)));
 
     currentPieces.add(currentPiece);
     } while (!(bitfield[currentPiece] == '0' && !currentPieces.contains(currentPiece)));
 
     currentPieces.add(currentPiece);
@@ -424,7 +424,7 @@ public class Peer extends Process {
         int j = 0;
         do {
           int i = 0;
         int j = 0;
         do {
           int i = 0;
-          int idChosen = stream.randInt(0,peers.size() - 1);
+          int idChosen = rand.nextInt(peers.size());
           for (Connection connection : peers.values()) {
             if (i == idChosen) {
               peerChoosed = connection;
           for (Connection connection : peers.values()) {
             if (i == idChosen) {
               peerChoosed = connection;
index da6e81e..6621939 100644 (file)
@@ -6,17 +6,17 @@
 
 package app.bittorrent;
 import java.util.ArrayList;
 
 package app.bittorrent;
 import java.util.ArrayList;
+import java.util.Random;
 
 import org.simgrid.msg.Msg;
 import org.simgrid.msg.Comm;
 import org.simgrid.msg.Host;
 import org.simgrid.msg.Task;
 import org.simgrid.msg.Process;
 
 import org.simgrid.msg.Msg;
 import org.simgrid.msg.Comm;
 import org.simgrid.msg.Host;
 import org.simgrid.msg.Task;
 import org.simgrid.msg.Process;
-import org.simgrid.msg.RngStream;
 import org.simgrid.msg.MsgException;
 
 public class Tracker extends Process {
 import org.simgrid.msg.MsgException;
 
 public class Tracker extends Process {
-  protected RngStream stream;
+  Random rand = new Random();
   protected ArrayList<Integer> peersList;
   protected double deadline;
   protected Comm commReceived = null;
   protected ArrayList<Integer> peersList;
   protected double deadline;
   protected Comm commReceived = null;
@@ -31,8 +31,6 @@ public class Tracker extends Process {
       Msg.info("Wrong number of arguments for the tracker.");
       return;
     }
       Msg.info("Wrong number of arguments for the tracker.");
       return;
     }
-    //Build the RngStream object for randomness
-    stream = new RngStream("tracker");
     //Retrieve the end time
     deadline = Double.parseDouble(args[0]);
     //Building peers array
     //Retrieve the end time
     deadline = Double.parseDouble(args[0]);
     //Building peers array
@@ -53,7 +51,7 @@ public class Tracker extends Process {
             while (nbPeers < Common.MAXIMUM_PEERS && nbPeers < peersList.size()) {
               int nextPeer;
               do {
             while (nbPeers < Common.MAXIMUM_PEERS && nbPeers < peersList.size()) {
               int nextPeer;
               do {
-                nextPeer = stream.randInt(0, peersList.size() - 1);
+                nextPeer = rand.nextInt(peersList.size());
               } while (tTask.peers.contains(peersList.get(nextPeer)));
               tTask.peers.add(peersList.get(nextPeer));
               nbPeers++;
               } while (tTask.peers.contains(peersList.get(nextPeer)));
               tTask.peers.add(peersList.get(nextPeer));
               nbPeers++;
index de5ca50..899802c 100644 (file)
@@ -8,7 +8,7 @@
 #include "s4u-peer.hpp"
 #include "s4u-tracker.hpp"
 
 #include "s4u-peer.hpp"
 #include "s4u-tracker.hpp"
 
-simgrid::xbt::Extension<simgrid::s4u::Host, HostBittorrent> HostBittorrent::EXTENSION_ID;
+std::default_random_engine generator;
 
 int main(int argc, char* argv[])
 {
 
 int main(int argc, char* argv[])
 {
@@ -19,12 +19,6 @@ int main(int argc, char* argv[])
 
   e.load_platform(argv[1]);
 
 
   e.load_platform(argv[1]);
 
-  /* Install our extension on all existing hosts */
-  HostBittorrent::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostBittorrent>();
-  std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::get_instance()->get_all_hosts();
-  for (auto const& host : list)
-    host->extension_set(new HostBittorrent(host));
-
   e.register_actor<Tracker>("tracker");
   e.register_actor<Peer>("peer");
   e.load_deployment(argv[2]);
   e.register_actor<Tracker>("tracker");
   e.register_actor<Peer>("peer");
   e.load_deployment(argv[2]);
index b2113ca..0895354 100644 (file)
@@ -7,8 +7,8 @@
 #ifndef BITTORRENT_BITTORRENT_HPP_
 #define BITTORRENT_BITTORRENT_HPP_
 
 #ifndef BITTORRENT_BITTORRENT_HPP_
 #define BITTORRENT_BITTORRENT_HPP_
 
+#include <random>
 #include <simgrid/s4u.hpp>
 #include <simgrid/s4u.hpp>
-#include <xbt/RngStream.h>
 
 constexpr char TRACKER_MAILBOX[] = "tracker_mailbox";
 /** Max number of peers sent by the tracker to clients */
 
 constexpr char TRACKER_MAILBOX[] = "tracker_mailbox";
 /** Max number of peers sent by the tracker to clients */
@@ -78,22 +78,14 @@ public:
 };
 
 class HostBittorrent {
 };
 
 class HostBittorrent {
-  std::unique_ptr<std::remove_pointer<RngStream>::type, std::function<void(RngStream)>> stream_ = {
-      nullptr, [](RngStream stream) { RngStream_DeleteStream(&stream); }};
   simgrid::s4u::Host* host = nullptr;
 
 public:
   simgrid::s4u::Host* host = nullptr;
 
 public:
-  static simgrid::xbt::Extension<simgrid::s4u::Host, HostBittorrent> EXTENSION_ID;
-
-  explicit HostBittorrent(simgrid::s4u::Host* ptr) : host(ptr)
-  {
-    std::string descr = std::string("RngSream<") + host->get_cname() + ">";
-    stream_.reset(RngStream_CreateStream(descr.c_str()));
-  }
+  explicit HostBittorrent(simgrid::s4u::Host* ptr) : host(ptr) {}
   HostBittorrent(const HostBittorrent&) = delete;
   HostBittorrent& operator=(const HostBittorrent&) = delete;
   HostBittorrent(const HostBittorrent&) = delete;
   HostBittorrent& operator=(const HostBittorrent&) = delete;
-
-  RngStream getStream() { return stream_.get(); };
 };
 
 };
 
+extern std::default_random_engine generator;
+
 #endif /* BITTORRENT_BITTORRENT_HPP_ */
 #endif /* BITTORRENT_BITTORRENT_HPP_ */
index ff9a094..360bb20 100644 (file)
@@ -44,8 +44,6 @@ Peer::Peer(std::vector<std::string> args)
   }
   xbt_assert(deadline > 0, "Wrong deadline supplied");
 
   }
   xbt_assert(deadline > 0, "Wrong deadline supplied");
 
-  stream = simgrid::s4u::this_actor::get_host()->extension<HostBittorrent>()->getStream();
-
   if (args.size() == 4 && args[3] == "1") {
     bitfield_       = (1U << FILE_PIECES) - 1U;
     bitfield_blocks = (1ULL << (FILE_PIECES * PIECES_BLOCKS)) - 1ULL;
   if (args.size() == 4 && args[3] == "1") {
     bitfield_       = (1U << FILE_PIECES) - 1U;
     bitfield_blocks = (1ULL << (FILE_PIECES * PIECES_BLOCKS)) - 1ULL;
@@ -456,7 +454,8 @@ int Peer::selectPieceToDownload(Connection* remote_peer)
 
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
 
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
-    int random_piece_index = RngStream_RandInt(stream, 0, nb_interesting_pieces - 1);
+    std::uniform_int_distribution<int> dist(0, nb_interesting_pieces - 1);
+    int random_piece_index = dist(generator);
     int current_index      = 0;
     for (unsigned int i = 0; i < FILE_PIECES; i++) {
       if (hasNotPiece(i) && remote_peer->hasPiece(i)) {
     int current_index      = 0;
     for (unsigned int i = 0; i < FILE_PIECES; i++) {
       if (hasNotPiece(i) && remote_peer->hasPiece(i)) {
@@ -479,7 +478,8 @@ int Peer::selectPieceToDownload(Connection* remote_peer)
         nb_interesting_pieces++;
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
         nb_interesting_pieces++;
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
-    int random_piece_index = RngStream_RandInt(stream, 0, nb_interesting_pieces - 1);
+    std::uniform_int_distribution<int> dist(0, nb_interesting_pieces - 1);
+    int random_piece_index = dist(generator);
     int current_index      = 0;
     for (unsigned int i = 0; i < FILE_PIECES; i++) {
       if (hasNotPiece(i) && remote_peer->hasPiece(i) && isNotDownloadingPiece(i)) {
     int current_index      = 0;
     for (unsigned int i = 0; i < FILE_PIECES; i++) {
       if (hasNotPiece(i) && remote_peer->hasPiece(i) && isNotDownloadingPiece(i)) {
@@ -510,7 +510,11 @@ int Peer::selectPieceToDownload(Connection* remote_peer)
 
     xbt_assert(nb_min_pieces != 0 || not isInterestedByFree(remote_peer));
     // get a random rarest piece
 
     xbt_assert(nb_min_pieces != 0 || not isInterestedByFree(remote_peer));
     // get a random rarest piece
-    int random_rarest_index = RngStream_RandInt(stream, 0, nb_min_pieces - 1);
+    int random_rarest_index = 0;
+    if (nb_min_pieces > 0) {
+      std::uniform_int_distribution<int> dist(0, nb_min_pieces - 1);
+      random_rarest_index = dist(generator);
+    }
     for (unsigned int i = 0; i < FILE_PIECES; i++)
       if (pieces_count[i] == min && hasNotPiece(i) && remote_peer->hasPiece(i) && isNotDownloadingPiece(i)) {
         if (random_rarest_index == current_index) {
     for (unsigned int i = 0; i < FILE_PIECES; i++)
       if (pieces_count[i] == min && hasNotPiece(i) && remote_peer->hasPiece(i) && isNotDownloadingPiece(i)) {
         if (random_rarest_index == current_index) {
@@ -559,7 +563,8 @@ void Peer::updateChokedPeers()
       do {
         // We choose a random peer to unchoke.
         std::unordered_map<int, Connection>::iterator chosen_peer_it = connected_peers.begin();
       do {
         // We choose a random peer to unchoke.
         std::unordered_map<int, Connection>::iterator chosen_peer_it = connected_peers.begin();
-        std::advance(chosen_peer_it, RngStream_RandInt(stream, 0, connected_peers.size() - 1));
+        std::uniform_int_distribution<int> dist(0, connected_peers.size() - 1);
+        std::advance(chosen_peer_it, dist(generator));
         chosen_peer = &chosen_peer_it->second;
         if (not chosen_peer->interested || not chosen_peer->choked_upload)
           chosen_peer = nullptr;
         chosen_peer = &chosen_peer_it->second;
         if (not chosen_peer->interested || not chosen_peer->choked_upload)
           chosen_peer = nullptr;
index fa0418d..ecc5994 100644 (file)
@@ -31,7 +31,6 @@ public:
 class Peer {
   int id;
   double deadline;
 class Peer {
   int id;
   double deadline;
-  RngStream stream;
   simgrid::s4u::Mailbox* mailbox_;
   std::unordered_map<int, Connection> connected_peers;
   std::set<Connection*> active_peers; // active peers list
   simgrid::s4u::Mailbox* mailbox_;
   std::unordered_map<int, Connection> connected_peers;
   std::set<Connection*> active_peers; // active peers list
index a8a3446..390020a 100644 (file)
@@ -6,7 +6,6 @@
 
 #include "s4u-tracker.hpp"
 #include <algorithm>
 
 #include "s4u-tracker.hpp"
 #include <algorithm>
-#include <xbt/RngStream.h>
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_bt_tracker, "Messages specific for the tracker");
 
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_bt_tracker, "Messages specific for the tracker");
 
@@ -22,8 +21,6 @@ Tracker::Tracker(std::vector<std::string> args)
   }
   xbt_assert(deadline > 0, "Wrong deadline supplied");
 
   }
   xbt_assert(deadline > 0, "Wrong deadline supplied");
 
-  stream = simgrid::s4u::this_actor::get_host()->extension<HostBittorrent>()->getStream();
-
   mailbox = simgrid::s4u::Mailbox::by_name(TRACKER_MAILBOX);
 
   XBT_INFO("Tracker launched.");
   mailbox = simgrid::s4u::Mailbox::by_name(TRACKER_MAILBOX);
 
   XBT_INFO("Tracker launched.");
@@ -55,7 +52,8 @@ void Tracker::operator()()
       while (tried < max_tries) {
         do {
           next_peer = known_peers.begin();
       while (tried < max_tries) {
         do {
           next_peer = known_peers.begin();
-          std::advance(next_peer, RngStream_RandInt(stream, 0, nb_known_peers - 1));
+          std::uniform_int_distribution<int> dist(0, nb_known_peers - 1);
+          std::advance(next_peer, dist(generator));
         } while (ta->getPeers().find(*next_peer) != ta->getPeers().end());
         ta->addPeer(*next_peer);
         tried++;
         } while (ta->getPeers().find(*next_peer) != ta->getPeers().end());
         ta->addPeer(*next_peer);
         tried++;
index d4af5d6..2beffd4 100644 (file)
@@ -32,7 +32,6 @@ public:
 
 class Tracker {
   double deadline;
 
 class Tracker {
   double deadline;
-  RngStream stream;
   simgrid::s4u::Mailbox* mailbox;
   std::set<int> known_peers;
 
   simgrid::s4u::Mailbox* mailbox;
   std::set<int> known_peers;
 
index 9ad0c03..992d3a2 100644 (file)
@@ -52,7 +52,6 @@ Node::Node(std::vector<std::string> args)
 
   // initialize my node
   id_                = std::stoi(args[1]);
 
   // initialize my node
   id_                = std::stoi(args[1]);
-  stream             = simgrid::s4u::this_actor::get_host()->extension<HostChord>()->getStream();
   mailbox_           = simgrid::s4u::Mailbox::by_name(std::to_string(id_));
   next_finger_to_fix = 0;
   fingers_.resize(nb_bits, id_);
   mailbox_           = simgrid::s4u::Mailbox::by_name(std::to_string(id_));
   next_finger_to_fix = 0;
   fingers_.resize(nb_bits, id_);
@@ -135,7 +134,8 @@ void Node::notifyAndQuit()
 void Node::randomLookup()
 {
   int res          = id_;
 void Node::randomLookup()
 {
   int res          = id_;
-  int random_index = RngStream_RandInt(stream, 0, nb_bits - 1);
+  std::uniform_int_distribution<int> dist(0, nb_bits - 1);
+  int random_index = dist(generator);
   int random_id    = fingers_[random_index];
   XBT_DEBUG("Making a lookup request for id %d", random_id);
   if (random_id != id_)
   int random_id    = fingers_[random_index];
   XBT_DEBUG("Making a lookup request for id %d", random_id);
   if (random_id != id_)
index ca06eb4..221099c 100644 (file)
@@ -12,6 +12,8 @@ int nb_bits  = 24;
 int nb_keys  = 0;
 int timeout  = 50;
 
 int nb_keys  = 0;
 int timeout  = 50;
 
+std::default_random_engine generator;
+
 int main(int argc, char* argv[])
 {
   simgrid::s4u::Engine e(&argc, argv);
 int main(int argc, char* argv[])
 {
   simgrid::s4u::Engine e(&argc, argv);
index 12b6921..353a10c 100644 (file)
@@ -6,8 +6,8 @@
 #ifndef S4U_CHORD_HPP
 #define S4U_CHORD_HPP
 #include "simgrid/s4u.hpp"
 #ifndef S4U_CHORD_HPP
 #define S4U_CHORD_HPP
 #include "simgrid/s4u.hpp"
+#include <random>
 #include <string>
 #include <string>
-#include <xbt/RngStream.h>
 #include <xbt/str.h>
 
 constexpr double MAX_SIMULATION_TIME              = 1000;
 #include <xbt/str.h>
 
 constexpr double MAX_SIMULATION_TIME              = 1000;
@@ -21,23 +21,18 @@ extern int nb_bits;
 extern int nb_keys;
 extern int timeout;
 
 extern int nb_keys;
 extern int timeout;
 
+extern std::default_random_engine generator;
+
 class HostChord {
 class HostChord {
-  std::unique_ptr<std::remove_pointer<RngStream>::type, std::function<void(RngStream)>> stream_ = {
-      nullptr, [](RngStream stream) { RngStream_DeleteStream(&stream); }};
   simgrid::s4u::Host* host = nullptr;
 
 public:
   static simgrid::xbt::Extension<simgrid::s4u::Host, HostChord> EXTENSION_ID;
 
   simgrid::s4u::Host* host = nullptr;
 
 public:
   static simgrid::xbt::Extension<simgrid::s4u::Host, HostChord> EXTENSION_ID;
 
-  explicit HostChord(simgrid::s4u::Host* ptr) : host(ptr)
-  {
-    std::string descr = std::string("RngSream<") + host->get_cname() + ">";
-    stream_.reset(RngStream_CreateStream(descr.c_str()));
-  }
+  explicit HostChord(simgrid::s4u::Host* ptr) : host(ptr) {}
   HostChord(const HostChord&) = delete;
   HostChord& operator=(const HostChord&) = delete;
 
   HostChord(const HostChord&) = delete;
   HostChord& operator=(const HostChord&) = delete;
 
-  RngStream getStream() { return stream_.get(); };
 };
 
 /* Types of tasks exchanged between nodes. */
 };
 
 /* Types of tasks exchanged between nodes. */
@@ -80,7 +75,6 @@ class Node {
   simgrid::s4u::Mailbox* mailbox_;   // my mailbox
   std::vector<int> fingers_;         // finger table,(fingers[0] is my successor)
   int next_finger_to_fix;            // index of the next finger to fix in fix_fingers()
   simgrid::s4u::Mailbox* mailbox_;   // my mailbox
   std::vector<int> fingers_;         // finger table,(fingers[0] is my successor)
   int next_finger_to_fix;            // index of the next finger to fix in fix_fingers()
-  RngStream stream;
 
 public:
   explicit Node(std::vector<std::string> args);
 
 public:
   explicit Node(std::vector<std::string> args);
index 9e8fe7c..a89aaf6 100644 (file)
@@ -167,64 +167,50 @@ $ ${bindir:=.}/s4u-dht-chord -nb_bits=3 ${platfdir}/cluster_backbone.xml s4u-dht
 > [ 345.18145] (node@node-5.simgrid.org)    0  | 10874876
 > [ 345.18145] (node@node-5.simgrid.org) Predecessor: 42
 > [ 350.17354] (node@node-2.simgrid.org) My new predecessor is 42
 > [ 345.18145] (node@node-5.simgrid.org)    0  | 10874876
 > [ 345.18145] (node@node-5.simgrid.org) Predecessor: 42
 > [ 350.17354] (node@node-2.simgrid.org) My new predecessor is 42
-> [ 350.18135] (node@node-0.simgrid.org) My new finger #0 is 533744
-> [ 360.19676] (node@node-0.simgrid.org) My new finger #2 is 533744
-> [ 360.19676] (node@node-0.simgrid.org) My finger table:
-> [ 360.19676] (node@node-0.simgrid.org) Start | Succ
-> [ 360.19676] (node@node-0.simgrid.org)    3  | 533744
-> [ 360.19676] (node@node-0.simgrid.org)    4  | 16509405
-> [ 360.19676] (node@node-0.simgrid.org)    6  | 533744
-> [ 360.19676] (node@node-0.simgrid.org) Predecessor: 533744
-> [ 420.25020] (node@node-2.simgrid.org) Well Guys! I Think it's time for me to leave ;)
-> [ 425.24229] (node@node-0.simgrid.org) My new predecessor is 42
-> [ 475.24229] (node@node-0.simgrid.org) My new finger #0 is 42
-> [ 480.24219] (node@node-0.simgrid.org) My new predecessor is 16728096
-> [ 480.24219] (node@node-0.simgrid.org) My finger table:
-> [ 480.24219] (node@node-0.simgrid.org) Start | Succ
-> [ 480.24219] (node@node-0.simgrid.org)    3  |  42
-> [ 480.24219] (node@node-0.simgrid.org)    4  | 16509405
-> [ 480.24219] (node@node-0.simgrid.org)    6  | 533744
-> [ 480.24219] (node@node-0.simgrid.org) Predecessor: 16728096
-> [ 485.24990] (node@node-6.simgrid.org) My new finger #2 is 42
-> [ 485.24990] (node@node-6.simgrid.org) My finger table:
-> [ 485.24990] (node@node-6.simgrid.org) Start | Succ
-> [ 485.24990] (node@node-6.simgrid.org)    1  |  42
-> [ 485.24990] (node@node-6.simgrid.org)    2  |  42
-> [ 485.24990] (node@node-6.simgrid.org)    4  |  42
-> [ 485.24990] (node@node-6.simgrid.org) Predecessor: -1
-> [ 495.25751] (node@node-0.simgrid.org) My new finger #0 is 16728096
-> [ 525.28032] (node@node-6.simgrid.org) My new predecessor is 42
-> [ 525.28032] (node@node-6.simgrid.org) My finger table:
-> [ 525.28032] (node@node-6.simgrid.org) Start | Succ
-> [ 525.28032] (node@node-6.simgrid.org)    1  |  42
-> [ 525.28032] (node@node-6.simgrid.org)    2  |  42
-> [ 525.28032] (node@node-6.simgrid.org)    4  |  42
-> [ 525.28032] (node@node-6.simgrid.org) Predecessor: 42
-> [ 600.31785] (node@node-0.simgrid.org) My new finger #1 is 16728096
-> [ 600.31785] (node@node-0.simgrid.org) My finger table:
-> [ 600.31785] (node@node-0.simgrid.org) Start | Succ
-> [ 600.31785] (node@node-0.simgrid.org)    3  | 16728096
-> [ 600.31785] (node@node-0.simgrid.org)    4  | 16728096
-> [ 600.31785] (node@node-0.simgrid.org)    6  | 533744
-> [ 600.31785] (node@node-0.simgrid.org) Predecessor: 16728096
-> [ 720.40913] (node@node-0.simgrid.org) My new finger #2 is 16728096
-> [ 720.40913] (node@node-0.simgrid.org) My finger table:
-> [ 720.40913] (node@node-0.simgrid.org) Start | Succ
-> [ 720.40913] (node@node-0.simgrid.org)    3  | 16728096
-> [ 720.40913] (node@node-0.simgrid.org)    4  | 16728096
-> [ 720.40913] (node@node-0.simgrid.org)    6  | 16728096
-> [ 720.40913] (node@node-0.simgrid.org) Predecessor: 16728096
-> [ 850.49239] (node@node-5.simgrid.org) Well Guys! I Think it's time for me to leave ;)
-> [ 855.50791] (node@node-6.simgrid.org) My new finger #2 is 16728096
-> [ 855.50791] (node@node-6.simgrid.org) My finger table:
-> [ 855.50791] (node@node-6.simgrid.org) Start | Succ
-> [ 855.50791] (node@node-6.simgrid.org)    1  |  42
-> [ 855.50791] (node@node-6.simgrid.org)    2  |  42
-> [ 855.50791] (node@node-6.simgrid.org)    4  | 16728096
-> [ 855.50791] (node@node-6.simgrid.org) Predecessor: 42
-> [ 860.50781] (node@node-6.simgrid.org) Well Guys! I Think it's time for me to leave ;)
-> [ 865.49990] (node@node-0.simgrid.org) My new predecessor is 42
-> [ 915.49990] (node@node-0.simgrid.org) My new finger #0 is 42
-> [ 920.49980] (node@node-0.simgrid.org) My new finger #0 is 16509405
-> [1030.49960] (node@node-0.simgrid.org) Well Guys! I Think it's time for me to leave ;)
-> [1080.49960] (maestro@) Simulated time: 1080.5
+> [ 395.18925] (node@node-0.simgrid.org) My new finger #0 is 533744
+> [ 395.20486] (node@node-0.simgrid.org) My new finger #2 is 533744
+> [ 395.20486] (node@node-0.simgrid.org) My finger table:
+> [ 395.20486] (node@node-0.simgrid.org) Start | Succ
+> [ 395.20486] (node@node-0.simgrid.org)    3  | 533744
+> [ 395.20486] (node@node-0.simgrid.org)    4  | 16509405
+> [ 395.20486] (node@node-0.simgrid.org)    6  | 533744
+> [ 395.20486] (node@node-0.simgrid.org) Predecessor: 533744
+> [ 420.21217] (node@node-2.simgrid.org) Well Guys! I Think it's time for me to leave ;)
+> [ 420.23559] (node@node-0.simgrid.org) My new predecessor is 42
+> [ 425.23549] (node@node-0.simgrid.org) My new finger #0 is 42
+> [ 440.23519] (node@node-0.simgrid.org) My new predecessor is 16728096
+> [ 440.23519] (node@node-0.simgrid.org) My finger table:
+> [ 440.23519] (node@node-0.simgrid.org) Start | Succ
+> [ 440.23519] (node@node-0.simgrid.org)    3  |  42
+> [ 440.23519] (node@node-0.simgrid.org)    4  | 16509405
+> [ 440.23519] (node@node-0.simgrid.org)    6  | 533744
+> [ 440.23519] (node@node-0.simgrid.org) Predecessor: 16728096
+> [ 440.23519] (node@node-0.simgrid.org) My new finger #0 is 16728096
+> [ 470.24239] (node@node-6.simgrid.org) My new predecessor is 42
+> [ 470.24239] (node@node-6.simgrid.org) My finger table:
+> [ 470.24239] (node@node-6.simgrid.org) Start | Succ
+> [ 470.24239] (node@node-6.simgrid.org)    1  |  42
+> [ 470.24239] (node@node-6.simgrid.org)    2  |  42
+> [ 470.24239] (node@node-6.simgrid.org)    4  | 16728096
+> [ 470.24239] (node@node-6.simgrid.org) Predecessor: 42
+> [ 635.37180] (node@node-0.simgrid.org) My new finger #1 is 16728096
+> [ 635.37180] (node@node-0.simgrid.org) My finger table:
+> [ 635.37180] (node@node-0.simgrid.org) Start | Succ
+> [ 635.37180] (node@node-0.simgrid.org)    3  | 16728096
+> [ 635.37180] (node@node-0.simgrid.org)    4  | 16728096
+> [ 635.37180] (node@node-0.simgrid.org)    6  | 533744
+> [ 635.37180] (node@node-0.simgrid.org) Predecessor: 16728096
+> [ 755.43185] (node@node-0.simgrid.org) My new finger #2 is 16728096
+> [ 755.43185] (node@node-0.simgrid.org) My finger table:
+> [ 755.43185] (node@node-0.simgrid.org) Start | Succ
+> [ 755.43185] (node@node-0.simgrid.org)    3  | 16728096
+> [ 755.43185] (node@node-0.simgrid.org)    4  | 16728096
+> [ 755.43185] (node@node-0.simgrid.org)    6  | 16728096
+> [ 755.43185] (node@node-0.simgrid.org) Predecessor: 16728096
+> [ 850.51581] (node@node-5.simgrid.org) Well Guys! I Think it's time for me to leave ;)
+> [ 860.51561] (node@node-6.simgrid.org) Well Guys! I Think it's time for me to leave ;)
+> [ 865.52332] (node@node-0.simgrid.org) My new predecessor is 42
+> [ 870.52322] (node@node-0.simgrid.org) My new finger #0 is 42
+> [ 950.52262] (node@node-0.simgrid.org) My new finger #0 is 16509405
+> [1000.52262] (node@node-0.simgrid.org) Well Guys! I Think it's time for me to leave ;)
+> [1050.52262] (maestro@) Simulated time: 1050.52
diff --git a/include/xbt/RngStream.h b/include/xbt/RngStream.h
deleted file mode 100644 (file)
index a9a675d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (c) 2012-2019. 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. */
-
-/* RngStream.h for ANSI C */
-#ifndef RNGSTREAM_H
-#define RNGSTREAM_H
-
-#include <xbt/misc.h>
-
-typedef struct RngStream_InfoState * RngStream;
-
-struct RngStream_InfoState {
-   double Cg[6];
-   double Bg[6];
-   double Ig[6];
-   int Anti;
-   int IncPrec;
-   char *name;
-};
-
-SG_BEGIN_DECL();
-
-XBT_PUBLIC int RngStream_SetPackageSeed(unsigned long seed[6]);
-XBT_PUBLIC RngStream RngStream_CreateStream(const char name[]);
-XBT_PUBLIC void RngStream_DeleteStream(RngStream* pg);
-XBT_PUBLIC RngStream RngStream_CopyStream(const RngStream src);
-XBT_PUBLIC void RngStream_ResetStartStream(RngStream g);
-XBT_PUBLIC void RngStream_ResetStartSubstream(RngStream g);
-XBT_PUBLIC void RngStream_ResetNextSubstream(RngStream g);
-XBT_PUBLIC void RngStream_SetAntithetic(RngStream g, int a);
-XBT_PUBLIC void RngStream_IncreasedPrecis(RngStream g, int incp);
-XBT_PUBLIC int RngStream_SetSeed(RngStream g, unsigned long seed[6]);
-XBT_PUBLIC void RngStream_AdvanceState(RngStream g, long e, long c);
-XBT_PUBLIC void RngStream_GetState(RngStream g, unsigned long seed[6]);
-XBT_PUBLIC void RngStream_WriteState(RngStream g);
-XBT_PUBLIC void RngStream_WriteStateFull(RngStream g);
-XBT_PUBLIC double RngStream_RandU01(RngStream g);
-XBT_PUBLIC int RngStream_RandInt(RngStream g, int i, int j);
-
-SG_END_DECL();
-
-#endif
-
-
index b1ac57c..4d3c444 100644 (file)
@@ -145,8 +145,7 @@ sonar.issue.ignore.multicriteria.s4.resourceKey=src/smpi/**/*.cpp
 #  - Collectives that we borrowed elsewhere (mpich, openMPI and other implems)
 #  - the NAS, that are included in our examples
 #  - The Catch2 library, that is included in our unit tests
 #  - Collectives that we borrowed elsewhere (mpich, openMPI and other implems)
 #  - the NAS, that are included in our examples
 #  - The Catch2 library, that is included in our unit tests
-#  - RngStream, that is included in SimGrid
-sonar.exclusions=src/include/catch.hpp,src/*_unit.c*,teshsuite/smpi/mpich3-test/**,teshsuite/smpi/isp/**,**/*_dtd.c,**/*_dtd.h,**/*yy.c,src/xbt/automaton/parserPromela.tab.*,src/smpi/colls/**/*,examples/smpi/NAS/*,examples/smpi/gemm/gemm.c,src/xbt/RngStream.c,include/xbt/RngStream.h
+sonar.exclusions=src/include/catch.hpp,src/*_unit.c*,teshsuite/smpi/mpich3-test/**,teshsuite/smpi/isp/**,**/*_dtd.c,**/*_dtd.h,**/*yy.c,src/xbt/automaton/parserPromela.tab.*,src/smpi/colls/**/*,examples/smpi/NAS/*,examples/smpi/gemm/gemm.c
 
 # Exclude our examples from the duplication detection.
 # Examples are expected to be somehow repetitive
 
 # Exclude our examples from the duplication detection.
 # Examples are expected to be somehow repetitive
diff --git a/src/bindings/java/jmsg_rngstream.cpp b/src/bindings/java/jmsg_rngstream.cpp
deleted file mode 100644 (file)
index 1d4987c..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Java binding of the RngStream library                                    */
-
-/* Copyright (c) 2007-2019. 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 "xbt/sysdep.h"
-
-#include "jmsg_rngstream.h"
-#include "jxbt_utilities.hpp"
-
-jfieldID jrngstream_bind;
-
-RngStream jrngstream_to_native(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = (RngStream)(intptr_t)env->GetLongField(jrngstream, jrngstream_bind);
-  if (not rngstream) {
-    jxbt_throw_notbound(env, "rngstream", jrngstream);
-    return nullptr;
-  }
-  return rngstream;
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_nativeInit(JNIEnv *env, jclass cls) {
-  jclass class_RngStream = env->FindClass("org/simgrid/msg/RngStream");
-
-  jrngstream_bind = jxbt_get_jfield(env, class_RngStream, "bind", "J");
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_create(JNIEnv *env, jobject jrngstream, jstring jname) {
-  const char *name = env->GetStringUTFChars(jname, 0);
-  RngStream rngstream = RngStream_CreateStream(name);
-  //Bind the RngStream object
-  env->SetLongField(jrngstream, jrngstream_bind, (intptr_t)rngstream);
-
-  env->ReleaseStringUTFChars(jname, name);
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_nativeFinalize(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  RngStream_DeleteStream(&rngstream);
-  env->SetLongField(jrngstream, jrngstream_bind, (intptr_t)nullptr);
-}
-
-JNIEXPORT jboolean JNICALL
-Java_org_simgrid_msg_RngStream_setPackageSeed(JNIEnv *env, jobject jrngstream, jintArray jseed) {
-
-  if (jseed == nullptr) {
-    jxbt_throw_null(env, xbt_strdup("seed argument is null"));
-    return JNI_FALSE;
-  }
-
-  jint buffer[6];
-  env->GetIntArrayRegion(jseed, 0, 6, buffer);
-
-  // The C API expects unsigned long which are wider than int on LP64.
-  // We need to convert:
-  unsigned long seed[6];
-  for (int i = 0; i != 6; ++i)
-    seed[i] = buffer[i];
-
-  int result = RngStream_SetPackageSeed(seed);
-  return result == -1 ? JNI_FALSE : JNI_TRUE;
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetStart(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return;
-
-  RngStream_ResetStartStream(rngstream);
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetStartSubstream(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return;
-
-  RngStream_ResetStartSubstream(rngstream);
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetNextSubstream(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return;
-
-  RngStream_ResetNextSubstream(rngstream);
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_setAntithetic(JNIEnv *env, jobject jrngstream, jboolean ja) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return;
-
-  if (ja == JNI_TRUE) {
-    RngStream_SetAntithetic(rngstream,-1);
-  }
-  else {
-    RngStream_SetAntithetic(rngstream,0);
-  }
-}
-
-JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_RngStream_setSeed(JNIEnv *env, jobject jrngstream, jintArray jseed) {
-  jint buffer[6];
-
-  env->GetIntArrayRegion(jseed, 0, 6, buffer);
-
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return JNI_FALSE;
-
-  // The C API expects unsigned long which are wider than int on LP64.
-  // We need to convert:
-  unsigned long seed[6];
-  for (int i = 0; i != 6; ++i)
-    seed[i] = buffer[i];
-
-  int result = RngStream_SetSeed(rngstream, seed);
-
-  return result == -1 ? JNI_FALSE : JNI_TRUE;
-}
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_advanceState(JNIEnv *env, jobject jrngstream, jint e, jint g) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return;
-
-  RngStream_AdvanceState(rngstream, (long)e, (long)g);
-}
-
-JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_RngStream_randU01(JNIEnv *env, jobject jrngstream) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return 0;
-
-  return (jdouble)RngStream_RandU01(rngstream);
-}
-
-JNIEXPORT jint JNICALL Java_org_simgrid_msg_RngStream_randInt(JNIEnv *env, jobject jrngstream, jint i, jint j) {
-  RngStream rngstream = jrngstream_to_native(env, jrngstream);
-  if (not rngstream)
-    return 0;
-
-  return (jint)RngStream_RandInt(rngstream, (int)i, (int)j);
-}
diff --git a/src/bindings/java/jmsg_rngstream.h b/src/bindings/java/jmsg_rngstream.h
deleted file mode 100644 (file)
index e92b587..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Java binding of the RngStream library                                    */
-
-/* Copyright (c) 2007-2019. 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. */
-
-#ifndef MSG_RNGSTREAM_H
-#define MSG_RNGSTREAM_H
-
-#include "xbt/RngStream.h"
-#include <jni.h>
-
-SG_BEGIN_DECL()
-
-/* Shut up some errors in eclipse online compiler. I wish such a pimple wouldn't be needed */
-#ifndef JNIEXPORT
-#define JNIEXPORT
-#endif
-#ifndef JNICALL
-#define JNICALL
-#endif
-/* end of eclipse-mandated pimple */
-
-RngStream jrngstream_to_native(JNIEnv *env, jobject jrngstream);
-
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_nativeInit(JNIEnv *env, jclass cls);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_create(JNIEnv *env, jobject jrngstream, jstring name);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_nativeFinalize(JNIEnv *env, jobject jrngstream);
-JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_RngStream_setPackageSeed(JNIEnv* env, jobject jrngstream,
-                                                                         jintArray seed);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetStart(JNIEnv *env, jobject jrngstream);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetStartSubstream(JNIEnv *env, jobject jrngstream);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_resetNextSubstream(JNIEnv *env, jobject jrngstream);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_setAntithetic(JNIEnv *env, jobject jrngstream, jboolean ja);
-JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_RngStream_setSeed(JNIEnv *env, jobject jrngstream, jintArray jseed);
-JNIEXPORT void JNICALL Java_org_simgrid_msg_RngStream_advanceState(JNIEnv *env, jobject jrngstream, jint e, jint g);
-JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_RngStream_randU01(JNIEnv *env, jobject jrngstream);
-JNIEXPORT jint JNICALL Java_org_simgrid_msg_RngStream_randInt(JNIEnv *env, jobject jrngstream, jint i, jint j);
-
-SG_END_DECL()
-#endif
diff --git a/src/bindings/java/org/simgrid/msg/RngStream.java b/src/bindings/java/org/simgrid/msg/RngStream.java
deleted file mode 100644 (file)
index 2209f49..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* JNI interface to C RngStream code */
-
-/* Copyright (c) 2006-2019. 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. */
-
-package org.simgrid.msg;
-/**
- * Export of RngStreams for Java
- */
-public class RngStream {
-       /**
-        * Represents the bind between the RngStream java object and the C object.
-        */
-       private long bind;
-       /**
-        * Creates and returns a new stream without identifier.
-        * This procedure reserves space to keep the information relative to
-        * the RngStream, initializes its seed Ig , sets Bg and Cg equal to Ig , sets its antithetic and
-        * precision switches to 0. The seed Ig is equal to the initial seed of the package given by
-        * setPackageSeed if this is the first stream created, otherwise it is Z steps ahead
-        * of that of the most recently created stream.
-        */
-       public RngStream() {
-               create("");
-       }
-       /**
-        * Creates and returns a new stream with identifier "name".
-        * This procedure reserves space to keep the information relative to
-        * the RngStream, initializes its seed Ig , sets Bg and Cg equal to Ig , sets its antithetic and
-        * precision switches to 0. The seed Ig is equal to the initial seed of the package given by
-        * setPackageSeed if this is the first stream created, otherwise it is Z steps ahead
-        * of that of the most recently created stream.
-        */
-       public RngStream(String name) {
-               create(name);
-       }
-       /**
-        * The natively implemented method to create a C RngStream object.
-        */
-       private native void create(String name);
-
-       /** @deprecated (from Java9 onwards) */
-       @Deprecated @Override
-       protected void finalize() throws Throwable{
-               nativeFinalize();
-       }
-       /**
-        * Release the C RngStream object
-        */
-       private native void nativeFinalize();
-
-       /**
-        * Sets the initial seed of the package RngStreams to the six integers in the vector seed. This will
-        * be the seed (initial state) of the first stream. If this procedure is not called, the default initial
-        * seed is (12345, 12345, 12345, 12345, 12345, 12345). If it is called, the first 3 values of the seed
-        * must all be less than m1 = 4294967087, and not all 0; and the last 3 values must all be less
-        * than m2 = 4294944443, and not all 0. Returns false for invalid seeds, and true otherwise.
-        */
-       public static native boolean setPackageSeed(int[] seed);
-       /**
-        * Reinitializes the stream g to its initial state: Cg and Bg are set to Ig .
-        */
-       public native void resetStart();
-       /**
-        * Reinitializes the stream g to the beginning of its current substream: Cg is set to Bg .
-        */
-       public native void restartStartSubstream();
-       /**
-        * Reinitializes the stream g to the beginning of its next substream: Ng is computed, and Cg and
-        * Bg are set to Ng .
-        */
-       public native void resetNextSubstream();
-       /**
-        * If a = true the stream g will start generating antithetic variates, i.e., 1 - U instead of U , until
-        *  this method is called again with a = false.
-        */
-       public native void setAntithetic(boolean a);
-       /**
-        * Sets the initial seed Ig of stream g to the vector seed. This vector must satisfy the same
-        * conditions as in setPackageSeed. The stream is then reset to this initial seed. The
-        * states and seeds of the other streams are not modified. As a result, after calling this procedure,
-        * the initial seeds of the streams are no longer spaced Z values apart. We discourage the use of
-        * this procedure. Returns false for invalid seeds, and true otherwise.
-        */
-       public native boolean setSeed(int[] seed);
-       /**
-        * Advances the state of the stream by k values, without modifying the states of other streams (as
-        * in RngStream_SetSeed), nor the values of Bg and Ig associated with this stream. If e &gt; 0, then
-        * k = 2e + c; if e &lt; 0, then k = -2-e + c; and if e = 0, then k = c. Note: c is allowed to take
-        * negative values. We discourage the use of this procedure.    
-        */
-       public native void advanceState(int e, int g);
-
-       /**
-        * Returns a (pseudo)random number from the uniform distribution over the interval (0, 1), after advancing the state by one step. The returned number has 32 bits of precision
-        * in the sense that it is always a multiple of 1/(232 - 208), unless RngStream_IncreasedPrecis
-        * has been called for this stream.
-        */
-       public native double randU01();
-       /**
-        * Returns a (pseudo)random number from the discrete uniform distribution over the integers
-        * {i, i + 1, . . . , j}
-        */
-       public native int randInt(int i, int j);
-
-       /**
-        * Class initializer, to initialize various JNI stuff
-        */
-       public static native void nativeInit();
-       static {
-               org.simgrid.NativeLib.nativeInit();
-               nativeInit();
-       }
-}
diff --git a/src/xbt/RngStream.c b/src/xbt/RngStream.c
deleted file mode 100644 (file)
index 4638fce..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-/* Copyright (c) 2012-2019. 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. */
-
-/***********************************************************************\
- *
- * File:           RngStream.c for multiple streams of Random Numbers
- * Language:       ANSI C
- * Copyright:      Pierre L'Ecuyer, University of Montreal
- * Date:           14 August 2001
- * License:      GPL version 2 or later
- *
- * Notice:         Please contact P. L'Ecuyer at <lecuyer@iro.UMontreal.ca>
- *                 for commercial purposes.
- *
-\***********************************************************************/
-
-#include "xbt/RngStream.h"
-#include "xbt/sysdep.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*---------------------------------------------------------------------*/
-/* Private part.                                                       */
-/*---------------------------------------------------------------------*/
-
-#define norm  2.328306549295727688e-10
-#define m1    4294967087.0
-#define m2    4294944443.0
-#define a12     1403580.0
-#define a13n     810728.0
-#define a21      527612.0
-#define a23n    1370589.0
-
-#define two17   131072.0
-#define two53   9007199254740992.0
-#define fact  5.9604644775390625e-8    /* 1 / 2^24 */
-
-/* Default initial seed of the package. Will be updated to become the seed of the next created stream. */
-static double nextSeed[6] = { 12345, 12345, 12345, 12345, 12345, 12345 };
-
-/* The following are the transition matrices of the two MRG components */
-/* (in matrix form), raised to the powers -1, 1, 2^76, and 2^127, resp.*/
-static double InvA1[3][3] = {          /* Inverse of A1p0 */
-          { 184888585.0,   0.0,  1945170933.0 },
-          {         1.0,   0.0,           0.0 },
-          {         0.0,   1.0,           0.0 }
-          };
-
-static double InvA2[3][3] = {          /* Inverse of A2p0 */
-          {      0.0,  360363334.0,  4225571728.0 },
-          {      1.0,          0.0,           0.0 },
-          {      0.0,          1.0,           0.0 }
-          };
-
-static double A1p0[3][3] = {
-          {       0.0,        1.0,       0.0 },
-          {       0.0,        0.0,       1.0 },
-          { -810728.0,  1403580.0,       0.0 }
-          };
-
-static double A2p0[3][3] = {
-          {        0.0,        1.0,       0.0 },
-          {        0.0,        0.0,       1.0 },
-          { -1370589.0,        0.0,  527612.0 }
-          };
-
-static double A1p76[3][3] = {
-          {      82758667.0, 1871391091.0, 4127413238.0 },
-          {    3672831523.0,   69195019.0, 1871391091.0 },
-          {    3672091415.0, 3528743235.0,   69195019.0 }
-          };
-
-static double A2p76[3][3] = {
-          {    1511326704.0, 3759209742.0, 1610795712.0 },
-          {    4292754251.0, 1511326704.0, 3889917532.0 },
-          {    3859662829.0, 4292754251.0, 3708466080.0 }
-          };
-
-static double A1p127[3][3] = {
-          {    2427906178.0, 3580155704.0,  949770784.0 },
-          {     226153695.0, 1230515664.0, 3580155704.0 },
-          {    1988835001.0,  986791581.0, 1230515664.0 }
-          };
-
-static double A2p127[3][3] = {
-          {    1464411153.0,  277697599.0, 1610723613.0 },
-          {      32183930.0, 1464411153.0, 1022607788.0 },
-          {    2824425944.0,   32183930.0, 2093834863.0 }
-          };
-
-static double MultModM (double a, double s, double c, double m)
-   /* Compute (a*s + c) % m. m must be < 2^35.  Works also for s, c < 0 */
-{
-   double v;
-   long a1;
-   v = a * s + c;
-   if ((v >= two53) || (v <= -two53)) {
-      a1 = (long) (a / two17);
-      a -= a1 * two17;
-      v = a1 * s;
-      a1 = (long) (v / m);
-      v -= a1 * m;
-      v = v * two17 + a * s + c;
-   }
-   a1 = (long) (v / m);
-   if ((v -= a1 * m) < 0.0)
-      return v += m;
-   else
-      return v;
-}
-
-static void MatVecModM (double A[3][3], double s[3], double v[3], double m)
-   /* Returns v = A*s % m.  Assumes that -m < s[i] < m. */
-   /* Works even if v = s. */
-{
-   int i;
-   double x[3];
-   for (i = 0; i < 3; ++i) {
-      x[i] = MultModM (A[i][0], s[0], 0.0, m);
-      x[i] = MultModM (A[i][1], s[1], x[i], m);
-      x[i] = MultModM (A[i][2], s[2], x[i], m);
-   }
-   for (i = 0; i < 3; ++i)
-      v[i] = x[i];
-}
-
-static void MatMatModM (double A[3][3], double B[3][3], double C[3][3], double m)
-   /* Returns C = A*B % m. Work even if A = C or B = C or A = B = C. */
-{
-   int i, j;
-   double V[3], W[3][3];
-   for (i = 0; i < 3; ++i) {
-      for (j = 0; j < 3; ++j)
-         V[j] = B[j][i];
-      MatVecModM (A, V, V, m);
-      for (j = 0; j < 3; ++j)
-         W[j][i] = V[j];
-   }
-   for (i = 0; i < 3; ++i) {
-      for (j = 0; j < 3; ++j)
-         C[i][j] = W[i][j];
-   }
-}
-
-static void MatTwoPowModM (double A[3][3], double B[3][3], double m, long e)
-  /* Compute matrix B = (A^(2^e) % m);  works even if A = B */
-{
-   int i, j;
-
-   /* initialize: B = A */
-   if (A != B) {
-      for (i = 0; i < 3; i++) {
-         for (j = 0; j < 3; ++j)
-            B[i][j] = A[i][j];
-      }
-   }
-   /* Compute B = A^{2^e} */
-   for (i = 0; i < e; i++)
-      MatMatModM (B, B, B, m);
-}
-
-static void MatPowModM (double A[3][3], double B[3][3], double m, long n)
-   /* Compute matrix B = A^n % m ;  works even if A = B */
-{
-   int i, j;
-   double W[3][3];
-
-   /* initialize: W = A; B = I */
-   for (i = 0; i < 3; i++) {
-      for (j = 0; j < 3; ++j) {
-         W[i][j] = A[i][j];
-         B[i][j] = 0.0;
-      }
-   }
-   for (j = 0; j < 3; ++j)
-      B[j][j] = 1.0;
-
-   /* Compute B = A^n % m using the binary decomposition of n */
-   while (n > 0) {
-      if (n % 2)
-         MatMatModM (W, B, B, m);
-      MatMatModM (W, W, W, m);
-      n /= 2;
-   }
-}
-
-static double U01 (RngStream g)
-{
-   long k;
-   double p1, p2, u;
-
-   /* Component 1 */
-   p1 = a12 * g->Cg[1] - a13n * g->Cg[0];
-   k = p1 / m1;
-   p1 -= k * m1;
-   if (p1 < 0.0)
-      p1 += m1;
-   g->Cg[0] = g->Cg[1];
-   g->Cg[1] = g->Cg[2];
-   g->Cg[2] = p1;
-
-   /* Component 2 */
-   p2 = a21 * g->Cg[5] - a23n * g->Cg[3];
-   k = p2 / m2;
-   p2 -= k * m2;
-   if (p2 < 0.0)
-      p2 += m2;
-   g->Cg[3] = g->Cg[4];
-   g->Cg[4] = g->Cg[5];
-   g->Cg[5] = p2;
-
-   /* Combination */
-   u = ((p1 > p2) ? (p1 - p2) * norm : (p1 - p2 + m1) * norm);
-   return (g->Anti) ? (1 - u) : u;
-}
-
-static double U01d (RngStream g)
-{
-   double u;
-   u = U01(g);
-   if (g->Anti == 0) {
-      u += U01(g) * fact;
-      return (u < 1.0) ? u : (u - 1.0);
-   } else {
-      /* Don't forget that U01() returns 1 - u in the antithetic case */
-      u += (U01(g) - 1.0) * fact;
-      return (u < 0.0) ? u + 1.0 : u;
-   }
-}
-
-static int CheckSeed (unsigned long seed[6])
-{
-   /* Check that the seeds are legitimate values. Returns 0 if legal seeds, -1 otherwise */
-   int i;
-
-   for (i = 0; i < 3; ++i) {
-      if (seed[i] >= m1) {
-   fprintf (stderr, "****************************************\n"
-     "ERROR: Seed[%1d] >= m1, Seed is not set.\n"
-     "****************************************\n\n", i);
-   return (-1);
-       }
-   }
-   for (i = 3; i < 6; ++i) {
-      if (seed[i] >= m2) {
-   fprintf (stderr, "****************************************\n"
-     "ERROR: Seed[%1d] >= m1, Seed is not set.\n"
-     "****************************************\n\n", i);
-   return (-1);
-       }
-   }
-   if (seed[0] == 0 && seed[1] == 0 && seed[2] == 0) {
-      fprintf (stderr, "****************************\n"
-        "ERROR: First 3 seeds = 0.\n"
-        "****************************\n\n");
-      return (-1);
-   }
-   if (seed[3] == 0 && seed[4] == 0 && seed[5] == 0) {
-      fprintf (stderr, "****************************\n"
-        "ERROR: Last 3 seeds = 0.\n"
-        "****************************\n\n");
-      return (-1);
-   }
-
-   return 0;
-}
-
-/*---------------------------------------------------------------------*/
-/* Public part.                                                        */
-/*---------------------------------------------------------------------*/
-
-RngStream RngStream_CreateStream (const char name[])
-{
-   int i;
-   RngStream g;
-   size_t len;
-
-   g = (RngStream) xbt_malloc (sizeof (struct RngStream_InfoState));
-   if (g == NULL) {
-      printf ("RngStream_CreateStream: No more memory\n\n");
-      exit (EXIT_FAILURE);
-   }
-   if (name) {
-      len = strlen (name);
-      g->name = (char *) xbt_malloc ((len + 1) * sizeof (char));
-      memcpy(g->name, name, len + 1);
-   } else
-      g->name = 0;
-   g->Anti = 0;
-   g->IncPrec = 0;
-
-   for (i = 0; i < 6; ++i) {
-      g->Bg[i] = g->Cg[i] = g->Ig[i] = nextSeed[i];
-   }
-   MatVecModM (A1p127, nextSeed, nextSeed, m1);
-   MatVecModM (A2p127, &nextSeed[3], &nextSeed[3], m2);
-   return g;
-}
-
-void RngStream_DeleteStream (RngStream * p)
-{
-   if (*p == NULL)
-      return;
-   free((*p)->name);
-   free (*p);
-   *p = NULL;
-}
-
-RngStream RngStream_CopyStream (const RngStream src)
-{
-   RngStream g;
-
-   if(src == NULL) {
-     printf ("RngStream_CopyStream: 'src' not initialized\n\n");
-     exit (EXIT_FAILURE);
-   }
-
-   g = (RngStream) xbt_malloc (sizeof (struct RngStream_InfoState));
-   if (g == NULL) {
-      printf ("RngStream_CopyStream: No more memory\n\n");
-      exit (EXIT_FAILURE);
-   }
-   memcpy((void*) g, (void*) src, sizeof (struct RngStream_InfoState));
-
-   return g;
-}
-
-void RngStream_ResetStartStream (RngStream g)
-{
-   int i;
-   for (i = 0; i < 6; ++i)
-      g->Cg[i] = g->Bg[i] = g->Ig[i];
-}
-
-void RngStream_ResetNextSubstream (RngStream g)
-{
-   int i;
-   MatVecModM (A1p76, g->Bg, g->Bg, m1);
-   MatVecModM (A2p76, &g->Bg[3], &g->Bg[3], m2);
-   for (i = 0; i < 6; ++i)
-      g->Cg[i] = g->Bg[i];
-}
-
-void RngStream_ResetStartSubstream (RngStream g)
-{
-   int i;
-   for (i = 0; i < 6; ++i)
-      g->Cg[i] = g->Bg[i];
-}
-
-int RngStream_SetPackageSeed (unsigned long seed[6])
-{
-   int i;
-   if (CheckSeed (seed))
-      return -1;                    /* FAILURE */
-   for (i = 0; i < 6; ++i)
-      nextSeed[i] = seed[i];
-   return 0;                       /* SUCCESS */
-}
-
-int RngStream_SetSeed (RngStream g, unsigned long seed[6])
-{
-   int i;
-   if (CheckSeed (seed))
-      return -1;                    /* FAILURE */
-   for (i = 0; i < 6; ++i)
-      g->Cg[i] = g->Bg[i] = g->Ig[i] = seed[i];
-   return 0;                       /* SUCCESS */
-}
-
-void RngStream_AdvanceState (RngStream g, long e, long c)
-{
-   double B1[3][3], C1[3][3], B2[3][3], C2[3][3];
-
-   if (e > 0) {
-      MatTwoPowModM (A1p0, B1, m1, e);
-      MatTwoPowModM (A2p0, B2, m2, e);
-   } else if (e < 0) {
-      MatTwoPowModM (InvA1, B1, m1, -e);
-      MatTwoPowModM (InvA2, B2, m2, -e);
-   }
-
-   if (c >= 0) {
-      MatPowModM (A1p0, C1, m1, c);
-      MatPowModM (A2p0, C2, m2, c);
-   } else {
-      MatPowModM (InvA1, C1, m1, -c);
-      MatPowModM (InvA2, C2, m2, -c);
-   }
-
-   if (e) {
-      MatMatModM (B1, C1, C1, m1);
-      MatMatModM (B2, C2, C2, m2);
-   }
-
-   MatVecModM (C1, g->Cg, g->Cg, m1);
-   MatVecModM (C2, &g->Cg[3], &g->Cg[3], m2);
-}
-
-void RngStream_GetState (RngStream g, unsigned long seed[6])
-{
-   int i;
-   for (i = 0; i < 6; ++i)
-      seed[i] = g->Cg[i];
-}
-
-void RngStream_WriteState (RngStream g)
-{
-   int i;
-   if (g == NULL)
-      return;
-   printf ("The current state of the Rngstream");
-   if (g->name && (strlen (g->name) > 0))
-      printf (" %s", g->name);
-   printf (":\n   Cg = { ");
-
-   for (i = 0; i < 5; i++) {
-      printf ("%lu, ", (unsigned long) g->Cg[i]);
-   }
-   printf ("%lu }\n\n", (unsigned long) g->Cg[5]);
-}
-
-void RngStream_WriteStateFull (RngStream g)
-{
-   int i;
-   if (g == NULL)
-      return;
-   printf ("The RngStream");
-   if (g->name && (strlen (g->name) > 0))
-      printf (" %s", g->name);
-   printf (":\n   Anti = %s\n", (g->Anti ? "true" : "false"));
-   printf ("   IncPrec = %s\n", (g->IncPrec ? "true" : "false"));
-
-   printf ("   Ig = { ");
-   for (i = 0; i < 5; i++) {
-      printf ("%lu, ", (unsigned long) (g->Ig[i]));
-   }
-   printf ("%lu }\n", (unsigned long) g->Ig[5]);
-
-   printf ("   Bg = { ");
-   for (i = 0; i < 5; i++) {
-      printf ("%lu, ", (unsigned long) (g->Bg[i]));
-   }
-   printf ("%lu }\n", (unsigned long) g->Bg[5]);
-
-   printf ("   Cg = { ");
-   for (i = 0; i < 5; i++) {
-      printf ("%lu, ", (unsigned long) (g->Cg[i]));
-   }
-   printf ("%lu }\n\n", (unsigned long) g->Cg[5]);
-}
-
-void RngStream_IncreasedPrecis (RngStream g, int incp)
-{
-   g->IncPrec = incp;
-}
-
-void RngStream_SetAntithetic (RngStream g, int a)
-{
-   g->Anti = a;
-}
-
-double RngStream_RandU01 (RngStream g)
-{
-   if (g->IncPrec)
-      return U01d (g);
-   else
-      return U01 (g);
-}
-
-int RngStream_RandInt (RngStream g, int i, int j)
-{
-   return i + (int) ((j - i + 1.0) * RngStream_RandU01 (g));
-}
index 308a7b8..e1b6cba 100644 (file)
@@ -8,7 +8,6 @@
 #include "connection.h"
 #include "tracker.h"
 #include <simgrid/msg.h>
 #include "connection.h"
 #include "tracker.h"
 #include <simgrid/msg.h>
-#include <xbt/RngStream.h>
 
 #include <limits.h>
 #include <stdio.h> /* snprintf */
 
 #include <limits.h>
 #include <stdio.h> /* snprintf */
@@ -246,7 +245,6 @@ peer_t peer_init(int id, int seed)
 
   peer->pieces_count = xbt_new0(short, FILE_PIECES);
 
 
   peer->pieces_count = xbt_new0(short, FILE_PIECES);
 
-  peer->stream        = (RngStream)MSG_host_get_data(MSG_host_self());
   peer->comm_received = NULL;
 
   peer->round = 0;
   peer->comm_received = NULL;
 
   peer->round = 0;
@@ -499,7 +497,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
     }
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
     }
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
-    int random_piece_index = RngStream_RandInt(peer->stream, 0, nb_interesting_pieces - 1);
+    int random_piece_index = rand() % nb_interesting_pieces;
     int current_index      = 0;
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i)) {
     int current_index      = 0;
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i)) {
@@ -525,7 +523,7 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
     }
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
     }
     xbt_assert(nb_interesting_pieces != 0);
     // get a random interesting piece
-    int random_piece_index = RngStream_RandInt(peer->stream, 0, nb_interesting_pieces - 1);
+    int random_piece_index = rand() % nb_interesting_pieces;
     int current_index      = 0;
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i) &&
     int current_index      = 0;
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i) &&
@@ -558,7 +556,10 @@ int select_piece_to_download(peer_t peer, connection_t remote_peer)
     }
     xbt_assert(nb_min_pieces != 0 || (is_interested_and_free(peer, remote_peer) == 0));
     // get a random rarest piece
     }
     xbt_assert(nb_min_pieces != 0 || (is_interested_and_free(peer, remote_peer) == 0));
     // get a random rarest piece
-    int random_rarest_index = RngStream_RandInt(peer->stream, 0, nb_min_pieces - 1);
+    int random_rarest_index = 0;
+    if (nb_min_pieces > 0) {
+      random_rarest_index = rand() % nb_min_pieces;
+    }
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer->pieces_count[i] == min && peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i) &&
           peer_is_not_downloading_piece(peer, i)) {
     for (int i = 0; i < FILE_PIECES; i++) {
       if (peer->pieces_count[i] == min && peer_has_not_piece(peer, i) && connection_has_piece(remote_peer, i) &&
           peer_is_not_downloading_piece(peer, i)) {
@@ -615,7 +616,10 @@ void update_choked_peers(peer_t peer)
       int j = 0;
       do {
         // We choose a random peer to unchoke.
       int j = 0;
       do {
         // We choose a random peer to unchoke.
-        int id_chosen = RngStream_RandInt(peer->stream, 0, xbt_dict_length(peer->peers) - 1);
+        int id_chosen = 0;
+        if (xbt_dict_length(peer->peers) > 0) {
+          id_chosen = rand() % xbt_dict_length(peer->peers);
+        }
         int i         = 0;
         connection_t connection;
         xbt_dict_foreach (peer->peers, cursor, key, connection) {
         int i         = 0;
         connection_t connection;
         xbt_dict_foreach (peer->peers, cursor, key, connection) {
index 0ffdd83..21d6a13 100644 (file)
@@ -9,7 +9,6 @@
 #include "bittorrent.h"
 #include "connection.h"
 #include <simgrid/msg.h>
 #include "bittorrent.h"
 #include "connection.h"
 #include <simgrid/msg.h>
-#include <xbt/RngStream.h>
 #include <xbt/dict.h>
 #include <xbt/dynar.h>
 
 #include <xbt/dict.h>
 #include <xbt/dynar.h>
 
@@ -34,8 +33,6 @@ typedef struct s_peer {
   msg_task_t task_received; // current task being received
   msg_comm_t comm_received; // current comm
 
   msg_task_t task_received; // current task being received
   msg_comm_t comm_received; // current comm
 
-  RngStream stream; // RngStream for
-
   double begin_receive_time; // time when the receiving communication has begun, useful for calculating host speed.
 } s_peer_t;
 typedef s_peer_t* peer_t;
   double begin_receive_time; // time when the receiving communication has begun, useful for calculating host speed.
 } s_peer_t;
 typedef s_peer_t* peer_t;
index debad6f..d278ae0 100644 (file)
@@ -7,7 +7,6 @@
 #include "bittorrent-peer.h"
 #include "tracker.h"
 #include <simgrid/msg.h>
 #include "bittorrent-peer.h"
 #include "tracker.h"
 #include <simgrid/msg.h>
-#include <xbt/RngStream.h>
 
 #include <stdio.h> /* snprintf */
 
 
 #include <stdio.h> /* snprintf */
 
@@ -28,8 +27,6 @@ int main(int argc, char* argv[])
   xbt_dynar_foreach (host_list, i, host) {
     char descr[512];
     snprintf(descr, sizeof descr, "RngSream<%s>", MSG_host_get_name(host));
   xbt_dynar_foreach (host_list, i, host) {
     char descr[512];
     snprintf(descr, sizeof descr, "RngSream<%s>", MSG_host_get_name(host));
-    RngStream stream = RngStream_CreateStream(descr);
-    MSG_host_set_data(host, stream);
   }
 
   MSG_function_register("tracker", tracker);
   }
 
   MSG_function_register("tracker", tracker);
@@ -39,11 +36,6 @@ int main(int argc, char* argv[])
 
   MSG_main();
 
 
   MSG_main();
 
-  xbt_dynar_foreach (host_list, i, host) {
-    RngStream stream = (RngStream)MSG_host_get_data(host);
-    RngStream_DeleteStream(&stream);
-    MSG_host_set_data(host, NULL);
-  }
   xbt_dynar_free(&host_list);
 
   return 0;
   xbt_dynar_free(&host_list);
 
   return 0;
index dab3a1c..ba830b7 100644 (file)
@@ -6,7 +6,6 @@
 
 #include "tracker.h"
 #include <simgrid/msg.h>
 
 #include "tracker.h"
 #include <simgrid/msg.h>
-#include <xbt/RngStream.h>
 
 static void task_free(void* data);
 
 
 static void task_free(void* data);
 
@@ -24,7 +23,6 @@ int tracker(int argc, char* argv[])
   double deadline = xbt_str_parse_double(argv[1], "Invalid deadline: %s");
   xbt_assert(deadline > 0, "Wrong deadline supplied");
 
   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);
 
   // Building peers array
   xbt_dynar_t peers_list = xbt_dynar_new(sizeof(int), NULL);
 
@@ -51,7 +49,7 @@ int tracker(int argc, char* argv[])
         int peers_length = xbt_dynar_length(peers_list);
         for (int i = 0; i < MAXIMUM_PEERS && i < peers_length; i++) {
           do {
         int peers_length = xbt_dynar_length(peers_list);
         for (int i = 0; i < MAXIMUM_PEERS && 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, rand() % peers_length, int);
           } while (is_in_list(data->peers, next_peer));
           xbt_dynar_push_as(data->peers, int, next_peer);
         }
           } while (is_in_list(data->peers, next_peer));
           xbt_dynar_push_as(data->peers, int, next_peer);
         }
index b987e4a..180f99e 100644 (file)
@@ -266,7 +266,6 @@ set(SMPI_SRC
   )
 
 set(XBT_SRC
   )
 
 set(XBT_SRC
-  src/xbt/RngStream.c
   src/xbt/automaton/automaton.c
   src/xbt/automaton/automatonparse_promela.c
   src/xbt/backtrace.cpp
   src/xbt/automaton/automaton.c
   src/xbt/automaton/automatonparse_promela.c
   src/xbt/backtrace.cpp
@@ -496,8 +495,6 @@ set(JMSG_C_SRC
   src/bindings/java/jmsg_host.h
   src/bindings/java/jmsg_process.cpp
   src/bindings/java/jmsg_process.h
   src/bindings/java/jmsg_host.h
   src/bindings/java/jmsg_process.cpp
   src/bindings/java/jmsg_process.h
-  src/bindings/java/jmsg_rngstream.cpp
-  src/bindings/java/jmsg_rngstream.h
   src/bindings/java/jmsg_synchro.cpp
   src/bindings/java/jmsg_synchro.h
   src/bindings/java/jmsg_task.cpp
   src/bindings/java/jmsg_synchro.cpp
   src/bindings/java/jmsg_synchro.h
   src/bindings/java/jmsg_task.cpp
@@ -527,7 +524,6 @@ set(JMSG_JAVA_SRC
   src/bindings/java/org/simgrid/msg/Process.java
   src/bindings/java/org/simgrid/msg/ProcessKilledError.java
   src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java
   src/bindings/java/org/simgrid/msg/Process.java
   src/bindings/java/org/simgrid/msg/ProcessKilledError.java
   src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java
-  src/bindings/java/org/simgrid/msg/RngStream.java
   src/bindings/java/org/simgrid/msg/Semaphore.java
   src/bindings/java/org/simgrid/msg/Storage.java
   src/bindings/java/org/simgrid/msg/StorageNotFoundException.java
   src/bindings/java/org/simgrid/msg/Semaphore.java
   src/bindings/java/org/simgrid/msg/Storage.java
   src/bindings/java/org/simgrid/msg/StorageNotFoundException.java
@@ -777,7 +773,6 @@ set(headers_to_install
   include/xbt/parmap.h
   include/xbt/range.hpp
   include/xbt/replay.hpp
   include/xbt/parmap.h
   include/xbt/range.hpp
   include/xbt/replay.hpp
-  include/xbt/RngStream.h
   include/xbt/signal.hpp
   include/xbt/str.h
   include/xbt/string.hpp
   include/xbt/signal.hpp
   include/xbt/str.h
   include/xbt/string.hpp