Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[surf] move gap-related definition to the subclass where they belong
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 24 Nov 2015 21:01:45 +0000 (22:01 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 24 Nov 2015 21:01:48 +0000 (22:01 +0100)
No need to overload higher classes with useless cruft

src/surf/network_cm02.hpp
src/surf/network_interface.hpp
src/surf/network_smpi.cpp
src/surf/network_smpi.hpp

index 888907d..dc691d0 100644 (file)
@@ -18,6 +18,7 @@
  ***********/
 class XBT_PRIVATE NetworkCm02Model;
 class XBT_PRIVATE NetworkCm02Action;
+class XBT_PRIVATE NetworkSmpiModel;
 
 /*********
  * Tools *
@@ -34,8 +35,7 @@ private:
 public:
   NetworkCm02Model(int /*i*/) : NetworkModel() {};
   NetworkCm02Model();
-  ~NetworkCm02Model() {
-  }
+  ~NetworkCm02Model() { }
   Link* createLink(const char *name,
                  double bw_initial,
                  tmgr_trace_t bw_trace,
@@ -51,6 +51,8 @@ public:
   Action *communicate(RoutingEdge *src, RoutingEdge *dst,
                                           double size, double rate);
   bool shareResourcesIsIdempotent() {return true;}
+  virtual void gapAppend(double /*size*/, const Link* /*link*/, NetworkAction * /*action*/) {};
+  bool m_haveGap = false;
 };
 
 /************
@@ -73,20 +75,25 @@ public:
   void updateState(tmgr_trace_event_t event_type, double value, double date);
   void updateBandwidth(double value, double date=surf_get_clock());
   void updateLatency(double value, double date=surf_get_clock());
+  virtual void gapAppend(double /*size*/, const Link* /*link*/, NetworkAction * /*action*/) {};
+
+
 };
 
 
 /**********
  * Action *
  **********/
-
 class NetworkCm02Action : public NetworkAction {
   friend Action *NetworkCm02Model::communicate(RoutingEdge *src, RoutingEdge *dst, double size, double rate);
+  friend NetworkSmpiModel;
 
 public:
   NetworkCm02Action(Model *model, double cost, bool failed)
      : NetworkAction(model, cost, failed) {};
   void updateRemainingLazy(double now);
+protected:
+  double m_senderGap;
 };
 
 #endif /* SURF_NETWORK_CM02_HPP_ */
index bca2f83..bfd51b0 100644 (file)
@@ -111,8 +111,6 @@ public:
                                    e_surf_link_sharing_policy_t policy,
                                    xbt_dict_t properties)=0;
 
-  virtual void gapAppend(double /*size*/, const Link* /*link*/, NetworkAction * /*action*/) {};
-
   /**
    * @brief Create a communication between two hosts.
    * @details It makes calls to the routing part, and execute the communication
@@ -169,7 +167,6 @@ public:
    */
   virtual double bandwidthConstraint(double rate, double bound, double size);
   double shareResourcesFull(double now);
-  bool m_haveGap = false;
 };
 
 /************
@@ -304,7 +301,6 @@ public:
   double m_weight;
   double m_rate;
   const char* p_senderLinkName;
-  double m_senderGap;
   double m_senderSize;
   xbt_fifo_item_t p_senderFifoItem;
 #ifdef HAVE_LATENCY_BOUND_TRACKING
index 5d26431..045ccc5 100644 (file)
@@ -104,10 +104,11 @@ NetworkSmpiModel::~NetworkSmpiModel(){
   }
 }
 
-void NetworkSmpiModel::gapAppend(double size, Link* link, NetworkAction *action)
+void NetworkSmpiModel::gapAppend(double size, Link* link, NetworkAction *act)
 {
   const char *src = link->getName();
   xbt_fifo_t fifo;
+  NetworkCm02Action *action= static_cast<NetworkCm02Action*>(act);
 
   if (sg_sender_gap > 0.0) {
     if (!gap_lookup) {
index ddbfd25..0c02b26 100644 (file)
@@ -27,7 +27,7 @@ public:
   NetworkSmpiModel();
   ~NetworkSmpiModel();
 
-  using NetworkModel::gapAppend; // Explicit about overloaded method (silence Woverloaded-virtual from clang)
+  using NetworkCm02Model::gapAppend; // Explicit about overloaded method (silence Woverloaded-virtual from clang)
   void gapAppend(double size, Link* link, NetworkAction *action);
   void gapRemove(Action *action);
   double latencyFactor(double size);
@@ -47,4 +47,3 @@ public:
  **********/
 
 
-