Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Minimal change to support host on-off and permanent mailboxes
[simgrid.git] / src / surf / ns3 / ns3_simulator.hpp
index 20c81b712497c4cade8147bee069f346de6ee673..f4cd203afa33b06c68573c844d6120b6d513da6b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2022. 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. */
@@ -9,26 +9,25 @@
 #include "simgrid/s4u/Host.hpp"
 #include "src/surf/network_ns3.hpp"
 
+#include "ns3/wifi-module.h"
 #include <ns3/node.h>
 #include <ns3/tcp-socket-factory.h>
-#include "ns3/wifi-module.h"
 
 #include <cstdint>
 
-class NetPointNs3 {
+class XBT_PRIVATE NetPointNs3 {
 public:
   static simgrid::xbt::Extension<simgrid::kernel::routing::NetPoint, NetPointNs3> EXTENSION_ID;
 
   explicit NetPointNs3();
-  int node_num;
-  ns3::Ptr<ns3::Node> ns3_node_;
+  ns3::Ptr<ns3::Node> ns3_node_ = ns3::CreateObject<ns3::Node>(0);
+  std::string ipv4_address_;
 };
 
-XBT_PUBLIC void ns3_initialize(std::string TcpProtocol);
-XBT_PUBLIC void ns3_simulator(double max_seconds);
-XBT_PUBLIC void ns3_add_direct_route(NetPointNs3* src, NetPointNs3* dst, double bw, double lat, std::string link_name,
-                                     simgrid::s4u::Link::SharingPolicy policy);
-XBT_PUBLIC void ns3_add_cluster(const char* id, double bw, double lat);
+XBT_PRIVATE void ns3_simulator(double max_seconds);
+XBT_PRIVATE void ns3_add_direct_route(const simgrid::kernel::routing::NetPoint* src,
+                                      const simgrid::kernel::routing::NetPoint* dst, double bw, double lat,
+                                      simgrid::s4u::Link::SharingPolicy policy);
 
 class XBT_PRIVATE SgFlow {
 public:
@@ -37,13 +36,13 @@ public:
   // private:
   std::uint32_t buffered_bytes_ = 0;
   std::uint32_t sent_bytes_     = 0;
-  std::uint32_t remaining_;
   std::uint32_t total_bytes_;
+  std::uint32_t remaining_;
   bool finished_ = false;
   simgrid::kernel::resource::NetworkNS3Action* action_;
 };
 
-void start_flow(ns3::Ptr<ns3::Socket> sock, const char* to, uint16_t port_number);
+XBT_PRIVATE void start_flow(ns3::Ptr<ns3::Socket> sock, const char* to, uint16_t port_number);
 
 static inline std::string transform_socket_ptr(ns3::Ptr<ns3::Socket> local_socket)
 {
@@ -52,36 +51,4 @@ static inline std::string transform_socket_ptr(ns3::Ptr<ns3::Socket> local_socke
   return sstream.str();
 }
 
-class XBT_PRIVATE WifiZone {
-public:
-  WifiZone(std::string name_, simgrid::s4u::Host* host_, ns3::Ptr<ns3::Node> ap_node_,
-           ns3::Ptr<ns3::YansWifiChannel> channel_, int network_, int link_);
-
-  const char* get_cname();
-  simgrid::s4u::Host* get_host();
-  ns3::Ptr<ns3::Node> get_ap_node();
-  ns3::Ptr<ns3::YansWifiChannel> get_channel();
-  int get_network();
-  int get_link();
-  int get_n_sta_nodes();
-
-  void set_ap_node(ns3::Ptr<ns3::Node> ap_node_);
-  void set_network(int network_);
-  void set_link(int link_);
-  void add_sta_node();
-  static bool is_ap(ns3::Ptr<ns3::Node> ap);
-
-  static WifiZone* by_name(std::string name);
-
-private:
-  std::string name;
-  simgrid::s4u::Host* host;
-  ns3::Ptr<ns3::Node> ap_node;
-  ns3::Ptr<ns3::YansWifiChannel> channel;
-  int network;
-  int link;
-  int n_sta_nodes;
-  static std::unordered_map<std::string, WifiZone*> wifi_zones;
-};
-
 #endif