X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5e2c8aeab0ec45fb9945018b9de3cab5c1019875..3dbeba193df2e406bd9eff5be73c8bce0db0185e:/src/surf/network_cm02.hpp diff --git a/src/surf/network_cm02.hpp b/src/surf/network_cm02.hpp index bd8821aca5..6eaa6a0996 100644 --- a/src/surf/network_cm02.hpp +++ b/src/surf/network_cm02.hpp @@ -1,3 +1,9 @@ +/* Copyright (c) 2013-2014. 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 "network_interface.hpp" #include "xbt/fifo.h" #include "xbt/graph.h" @@ -11,11 +17,11 @@ class NetworkCm02Model; typedef NetworkCm02Model *NetworkCm02ModelPtr; -class NetworkCm02LinkLmm; -typedef NetworkCm02LinkLmm *NetworkCm02LinkLmmPtr; +class NetworkCm02Link; +typedef NetworkCm02Link *NetworkCm02LinkPtr; -class NetworkCm02ActionLmm; -typedef NetworkCm02ActionLmm *NetworkCm02ActionLmmPtr; +class NetworkCm02Action; +typedef NetworkCm02Action *NetworkCm02ActionPtr; /********* * Tools * @@ -34,7 +40,7 @@ public: f_networkSolve = lmm_solve; m_haveGap = false; };//FIXME: add network clean interface - NetworkCm02Model(string name) : NetworkModel(name) { + NetworkCm02Model(const char *name) : NetworkModel(name) { this->initialize(); } NetworkCm02Model() : NetworkModel("network") { @@ -42,7 +48,7 @@ public: } ~NetworkCm02Model() { } - NetworkLinkPtr createResource(const char *name, + NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -51,8 +57,9 @@ public: tmgr_trace_t state_trace, e_surf_link_sharing_policy_t policy, xbt_dict_t properties); + void addTraces(); void updateActionsStateLazy(double now, double delta); - void gapAppend(double /*size*/, const NetworkCm02LinkLmmPtr /*link*/, NetworkCm02ActionLmmPtr /*action*/) {}; + void updateActionsStateFull(double now, double delta); ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate); }; @@ -61,9 +68,9 @@ public: * Resource * ************/ -class NetworkCm02LinkLmm : public NetworkLinkLmm { +class NetworkCm02Link : public NetworkLink { public: - NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *name, xbt_dict_t props, + NetworkCm02Link(NetworkCm02ModelPtr model, const char *name, xbt_dict_t props, lmm_system_t system, double constraint_value, tmgr_history_t history, @@ -75,6 +82,8 @@ public: tmgr_trace_t lat_trace, e_surf_link_sharing_policy_t policy); 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()); }; @@ -82,10 +91,12 @@ public: * Action * **********/ -class NetworkCm02ActionLmm : public NetworkActionLmm { +class NetworkCm02Action : public NetworkAction { + friend ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate); + public: - NetworkCm02ActionLmm(ModelPtr model, double cost, bool failed) - : Action(model, cost, failed) {}; + NetworkCm02Action(ModelPtr model, double cost, bool failed) + : NetworkAction(model, cost, failed) {}; void updateRemainingLazy(double now); void recycle(); };