Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move one method higher in As hierarchy
[simgrid.git] / src / surf / network_interface.hpp
index a229068..ca9f7e1 100644 (file)
@@ -50,8 +50,6 @@ XBT_PUBLIC_DATA(simgrid::xbt::signal<void(simgrid::surf::NetworkAction*, simgrid
  *********/
 XBT_PUBLIC(void) netlink_parse_init(sg_platf_link_cbarg_t link);
 
-XBT_PUBLIC(void) net_add_traces();
-
 /*********
  * Model *
  *********/
@@ -70,12 +68,12 @@ public:
 
   /** @brief Destructor */
   ~NetworkModel() {
-       if (p_maxminSystem)
-         lmm_system_free(p_maxminSystem);
-       if (p_actionHeap)
-         xbt_heap_free(p_actionHeap);
-       if (p_modifiedSet)
-         delete p_modifiedSet;
+  if (p_maxminSystem)
+    lmm_system_free(p_maxminSystem);
+  if (p_actionHeap)
+    xbt_heap_free(p_actionHeap);
+  if (p_modifiedSet)
+    delete p_modifiedSet;
   }
 
   /**
@@ -86,7 +84,7 @@ public:
    * @param bw_trace The trace associated to the Link bandwidth
    * @param lat_initial The initial latency of the Link in seconds
    * @param lat_trace The trace associated to the Link latency
-   * @param state_initial The initial Link (state)[e_surf_resource_state_t]
+   * @param initiallyOn The initial Link (state)[e_surf_resource_state_t]
    * @param state_trace The trace associated to the Link (state)[e_surf_resource_state_t]
    * @param policy The sharing policy of the Link
    * @param properties Dictionary of properties associated to this Resource
@@ -115,7 +113,7 @@ public:
    * @return The action representing the communication
    */
   virtual Action *communicate(NetCard *src, NetCard *dst,
-                                          double size, double rate)=0;
+                               double size, double rate)=0;
 
   /** @brief Function pointer to the function to use to solve the lmm_system_t
    *
@@ -157,7 +155,7 @@ public:
    * @return The new bandwidth.
    */
   virtual double bandwidthConstraint(double rate, double bound, double size);
-  double shareResourcesFull(double now);
+  double next_occuring_event_full(double now) override;
 };
 
 /************
@@ -168,8 +166,8 @@ public:
   * @details A Link represents the link between two [hosts](\ref Host)
   */
 class Link :
-               public simgrid::surf::Resource,
-               public simgrid::surf::PropertyHolder {
+    public simgrid::surf::Resource,
+    public simgrid::surf::PropertyHolder {
 public:
   /**
    * @brief Link constructor
@@ -187,12 +185,10 @@ public:
    * @param name The name of the Link
    * @param props Dictionary of properties associated to this Link
    * @param constraint The lmm constraint associated to this Cpu if it is part of a LMM component
-   * @param history [TODO]
    * @param state_trace [TODO]
    */
   Link(simgrid::surf::NetworkModel *model, const char *name, xbt_dict_t props,
               lmm_constraint_t constraint,
-              tmgr_history_t history,
               tmgr_trace_t state_trace);
 
   /* Link destruction logic */
@@ -200,9 +196,9 @@ public:
 protected:
   ~Link();
 public:
-       void destroy(); // Must be called instead of the destructor
+  void destroy(); // Must be called instead of the destructor
 private:
-       bool currentlyDestroying_ = false;
+  bool currentlyDestroying_ = false;
 
 public:
   /** @brief Callback signal fired when a new Link is created.
@@ -213,40 +209,39 @@ public:
    *  Signature: void(Link*) */
   static simgrid::xbt::signal<void(simgrid::surf::Link*)> onDestruction;
 
-  /** @brief Callback signal fired when the state of a Link changes
-   *  Signature: `void(LinkAction *action, int previouslyOn, int currentlyOn)` */
-  static simgrid::xbt::signal<void(simgrid::surf::Link*, int, int)> onStateChange;
+  /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off)
+   *  Signature: `void(Link*)` */
+  static simgrid::xbt::signal<void(simgrid::surf::Link*)> onStateChange;
 
 
   /** @brief Get the bandwidth in bytes per second of current Link */
   virtual double getBandwidth();
 
   /** @brief Update the bandwidth in bytes per second of current Link */
-  virtual void updateBandwidth(double value, double date=surf_get_clock())=0;
+  virtual void updateBandwidth(double value)=0;
 
   /** @brief Get the latency in seconds of current Link */
   virtual double getLatency();
 
   /** @brief Update the latency in seconds of current Link */
-  virtual void updateLatency(double value, double date=surf_get_clock())=0;
+  virtual void updateLatency(double value)=0;
 
-  /** @brief The sharing policy is a @{link #e_surf_link_sharing_policy_t} (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
+  /** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
   virtual int sharingPolicy();
 
   /** @brief Check if the Link is used */
-  bool isUsed();
+  bool isUsed() override;
 
   void turnOn() override;
   void turnOff() override;
 
-  /* Using this object with the public part of
-    model does not make sense */
-  double m_latCurrent = 0;
-  tmgr_trace_event_t p_latEvent = NULL;
+  virtual void set_state_trace(tmgr_trace_t trace); /*< setup the trace file with states events (ON or OFF). Trace must contain boolean values. */
+  virtual void set_bandwidth_trace(tmgr_trace_t trace); /*< setup the trace file with bandwidth events (peak speed changes due to external load). Trace must contain percentages (value between 0 and 1). */
+  virtual void set_latency_trace(tmgr_trace_t trace); /*< setup the trace file with latency events (peak latency changes due to external load). Trace must contain absolute values */
 
-  /* LMM */
-  tmgr_trace_event_t p_stateEvent = NULL;
-  s_surf_metric_t p_speed;
+  tmgr_trace_iterator_t m_stateEvent = NULL;
+  s_surf_metric_t m_latency = {1.0,0,NULL};
+  s_surf_metric_t m_bandwidth = {1.0,0,NULL};
 
   /* User data */
 public:
@@ -260,7 +255,7 @@ private:
   static boost::unordered_map<std::string, Link *> *links;
 public:
   static Link *byName(const char* name);
-  static int linksAmount();
+  static int linksCount();
   static Link **linksList();
   static void linksExit();
 };