X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1a4fabff9123e7f1ef01fa140bb9d3065ebb223f..0700b488178346d3cccc454f641a7155c6ff6026:/src/surf/network_interface.hpp diff --git a/src/surf/network_interface.hpp b/src/surf/network_interface.hpp index 8988357d7c..46cd1a4b98 100644 --- a/src/surf/network_interface.hpp +++ b/src/surf/network_interface.hpp @@ -3,13 +3,14 @@ /* 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 "xbt/fifo.h" #include "surf_interface.hpp" #include "surf_routing.hpp" #ifndef SURF_NETWORK_INTERFACE_HPP_ #define SURF_NETWORK_INTERFACE_HPP_ + /*********** * Classes * ***********/ @@ -27,34 +28,41 @@ typedef NetworkAction *NetworkActionPtr; *************/ /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after NetworkLink creation * + * @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; +XBT_PUBLIC_DATA( surf_callback(void, NetworkLinkPtr)) networkLinkCreatedCallbacks; /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after NetworkLink destruction * + * @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; +XBT_PUBLIC_DATA( 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)` + * @brief Callbacks handler which emit the callbacks after NetworkLink State changed + * @details Callback functions have the following signature: `void(NetworkLinkActionPtr action, e_surf_resource_state_t old, e_surf_resource_state_t current)` */ -extern surf_callback(void, NetworkLinkPtr) networkLinkStateChangedCallbacks; +XBT_PUBLIC_DATA( surf_callback(void, NetworkLinkPtr, e_surf_resource_state_t, e_surf_resource_state_t)) networkLinkStateChangedCallbacks; /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after NetworkAction State changed * - * @details Callback functions have the following signature: `void(NetworkActionPtr)` + * @brief Callbacks handler which emit the callbacks after NetworkAction State changed + * @details Callback functions have the following signature: `void(NetworkActionPtr action, e_surf_action_state_t old, e_surf_action_state_t current)` */ -extern surf_callback(void, NetworkActionPtr) networkActionStateChangedCallbacks; +XBT_PUBLIC_DATA( surf_callback(void, NetworkActionPtr, e_surf_action_state_t, e_surf_action_state_t)) networkActionStateChangedCallbacks; + +/** @ingroup SURF_callbacks + * @brief Callbacks handler which emit the callbacks after communication created + * @details Callback functions have the following signature: `void(NetworkActionPtr action, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate)` + */ +XBT_PUBLIC_DATA( surf_callback(void, NetworkActionPtr, RoutingEdgePtr src, RoutingEdgePtr dst, double size, double rate)) networkCommunicateCallbacks; /********* * Tools * *********/ +XBT_PUBLIC(void) netlink_parse_init(sg_platf_link_cbarg_t link); -void net_define_callbacks(void); +XBT_PUBLIC(void) net_add_traces(); /********* * Model * @@ -73,7 +81,7 @@ public: /** * @brief NetworkModel constructor - * + * * @param name The name of the NetworkModel */ NetworkModel(const char *name) : Model(name) { @@ -95,7 +103,7 @@ public: /** * @brief Create a NetworkLink - * + * * @param name The name of the NetworkLink * @param bw_initial The initial bandwidth of the NetworkLink in bytes per second * @param bw_trace The trace associated to the NetworkLink bandwidth [TODO] @@ -107,7 +115,7 @@ public: * @param properties Dictionary of properties associated to this Resource * @return The created NetworkLink */ - virtual NetworkLinkPtr createResource(const char *name, + virtual NetworkLinkPtr createNetworkLink(const char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -117,17 +125,16 @@ public: e_surf_link_sharing_policy_t policy, xbt_dict_t properties)=0; - virtual void gapAppend(double /*size*/, const NetworkLinkPtr /*link*/, NetworkActionPtr /*action*/) {}; /** * @brief Create a communication between two [TODO] * @details [TODO] - * + * * @param src The source [TODO] * @param dst The destination [TODO] * @param size The size of the communication in bytes - * @param rate The + * @param rate The * @return The action representing the communication */ virtual ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst, @@ -135,7 +142,7 @@ public: /** * @brief Function pointer to the function to use to solve the lmm_system_t - * + * * @param system The lmm_system_t to solve */ void (*f_networkSolve)(lmm_system_t); @@ -143,7 +150,7 @@ public: /** * @brief [brief description] * @details [long description] - * + * * @param size [description] * @return [description] */ @@ -152,7 +159,7 @@ public: /** * @brief [brief description] * @details [long description] - * + * * @param size [description] * @return [description] */ @@ -161,7 +168,7 @@ public: /** * @brief [brief description] * @details [long description] - * + * * @param rate [description] * @param bound [description] * @param size [description] @@ -182,7 +189,7 @@ class NetworkLink : public Resource { public: /** * @brief NetworkLink constructor - * + * * @param model The CpuModel associated to this NetworkLink * @param name The name of the NetworkLink * @param props Dictionary of properties associated to this NetworkLink @@ -191,7 +198,7 @@ public: /** * @brief NetworkLink constructor - * + * * @param model The CpuModel associated to this NetworkLink * @param name The name of the NetworkLink * @param props Dictionary of properties associated to this NetworkLink @@ -211,29 +218,39 @@ public: /** * @brief Get the bandwidth in bytes per second of current NetworkLink - * + * * @return The bandwith in bytes per second of the current NetworkLink */ virtual double getBandwidth(); + /** + * @brief Update the bandwidth in bytes per second of current NetworkLink + */ + virtual void updateBandwidth(double value, double date=surf_get_clock())=0; + /** * @brief Get the latency in seconds of current NetworkLink - * + * * @return The latency in seconds of the current NetworkLink */ virtual double getLatency(); + /** + * @brief Update the latency in seconds of current NetworkLink + */ + virtual void updateLatency(double value, double date=surf_get_clock())=0; + /** * @brief Check if the NetworkLink is shared * @details [long description] - * + * * @return true if the current NetwokrLink is shared, false otherwise */ virtual bool isShared(); /** * @brief Check if the NetworkLink is used - * + * * @return true if the current NetwokrLink is used, false otherwise */ bool isUsed(); @@ -261,7 +278,7 @@ class NetworkAction : public Action { public: /** * @brief NetworkAction constructor - * + * * @param model The NetworkModel associated to this NetworkAction * @param cost The cost of this NetworkAction in [TODO] * @param failed [description] @@ -271,7 +288,7 @@ public: /** * @brief NetworkAction constructor - * + * * @param model The NetworkModel associated to this NetworkAction * @param cost The cost of this NetworkAction in [TODO] * @param failed [description]