X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ad2e588c6af6cf84b18ba7c1c96f4f9785d93c28..f9e6853d2c5b7b867211700bc12f0ee57f640b30:/src/surf/network_interface.hpp diff --git a/src/surf/network_interface.hpp b/src/surf/network_interface.hpp index b9425d2ba0..8988357d7c 100644 --- a/src/surf/network_interface.hpp +++ b/src/surf/network_interface.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2004-2013. The SimGrid Team. +/* Copyright (c) 2004-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -22,6 +22,34 @@ typedef NetworkLink *NetworkLinkPtr; class NetworkAction; typedef NetworkAction *NetworkActionPtr; +/************* + * Callbacks * + *************/ + +/** @ingroup SURF_callbacks + * @brief Callbacks handler which emit the callbacks after NetworkLink creation * + * @details Callback functions have the following signature: `void(NetworkLinkPtr)` + */ +extern surf_callback(void, NetworkLinkPtr) networkLinkCreatedCallbacks; + +/** @ingroup SURF_callbacks + * @brief Callbacks handler which emit the callbacks after NetworkLink destruction * + * @details Callback functions have the following signature: `void(NetworkLinkPtr)` + */ +extern surf_callback(void, NetworkLinkPtr) networkLinkDestructedCallbacks; + +/** @ingroup SURF_callbacks + * @brief Callbacks handler which emit the callbacks after NetworkLink State changed * + * @details Callback functions have the following signature: `void(NetworkLinkActionPtr)` + */ +extern surf_callback(void, NetworkLinkPtr) networkLinkStateChangedCallbacks; + +/** @ingroup SURF_callbacks + * @brief Callbacks handler which emit the callbacks after NetworkAction State changed * + * @details Callback functions have the following signature: `void(NetworkActionPtr)` + */ +extern surf_callback(void, NetworkActionPtr) networkActionStateChangedCallbacks; + /********* * Tools * *********/ @@ -105,17 +133,6 @@ public: virtual ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate)=0; - /** - * @brief Get the route between two RoutingEdge - * @details [TODO] - * - * @param src [TODO] - * @param dst [TODO] - * - * @return A xbt_dynar_t of [TODO] - */ - virtual xbt_dynar_t getRoute(RoutingEdgePtr src, RoutingEdgePtr dst); //FIXME: kill field? That is done by the routing nowadays - /** * @brief Function pointer to the function to use to solve the lmm_system_t * @@ -187,6 +204,11 @@ public: tmgr_history_t history, tmgr_trace_t state_trace); + /** + * @brief NetworkLink destructor + */ + ~NetworkLink(); + /** * @brief Get the bandwidth in bytes per second of current NetworkLink * @@ -216,6 +238,8 @@ public: */ bool isUsed(); + void setState(e_surf_resource_state_t state); + /* Using this object with the public part of model does not make sense */ double m_latCurrent; @@ -256,6 +280,17 @@ public: NetworkAction(ModelPtr model, double cost, bool failed, lmm_variable_t var) : Action(model, cost, failed, var) {}; + void setState(e_surf_action_state_t state); + +#ifdef HAVE_LATENCY_BOUND_TRACKING + /** + * @brief Check if the action is limited by latency. + * + * @return 1 if action is limited by latency, 0 otherwise + */ + virtual int getLatencyLimited() {return m_latencyLimited;} +#endif + double m_latency; double m_latCurrent; double m_weight;