From 43540e99b9c710a14e7626d346b3f45b8ed4e7e5 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Tue, 24 Nov 2015 22:01:45 +0100 Subject: [PATCH] [surf] move gap-related definition to the subclass where they belong No need to overload higher classes with useless cruft --- src/surf/network_cm02.hpp | 13 ++++++++++--- src/surf/network_interface.hpp | 4 ---- src/surf/network_smpi.cpp | 3 ++- src/surf/network_smpi.hpp | 3 +-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/surf/network_cm02.hpp b/src/surf/network_cm02.hpp index 888907df9b..dc691d0917 100644 --- a/src/surf/network_cm02.hpp +++ b/src/surf/network_cm02.hpp @@ -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_ */ diff --git a/src/surf/network_interface.hpp b/src/surf/network_interface.hpp index bca2f83ef2..bfd51b0b50 100644 --- a/src/surf/network_interface.hpp +++ b/src/surf/network_interface.hpp @@ -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 diff --git a/src/surf/network_smpi.cpp b/src/surf/network_smpi.cpp index 5d26431b7d..045ccc5c96 100644 --- a/src/surf/network_smpi.cpp +++ b/src/surf/network_smpi.cpp @@ -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(act); if (sg_sender_gap > 0.0) { if (!gap_lookup) { diff --git a/src/surf/network_smpi.hpp b/src/surf/network_smpi.hpp index ddbfd25ce2..0c02b26ef3 100644 --- a/src/surf/network_smpi.hpp +++ b/src/surf/network_smpi.hpp @@ -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: **********/ - -- 2.20.1