X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c39f643b5bfb0e99887c209a94e49f841a2daae4..5e3e50f757f70251b3fdf0b6610fe65071dd0d5b:/src/surf/network_interface.cpp diff --git a/src/surf/network_interface.cpp b/src/surf/network_interface.cpp index 49103cebbb..49e4c6d248 100644 --- a/src/surf/network_interface.cpp +++ b/src/surf/network_interface.cpp @@ -1,9 +1,9 @@ -/* - * network_interface.cpp - * - * Created on: Nov 29, 2013 - * Author: bedaride - */ +/* 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 "simgrid/sg_config.h" @@ -13,14 +13,20 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf, "Logging specific to the SURF network module"); -NetworkModelPtr surf_network_model = NULL; +/************* + * Callbacks * + *************/ -xbt_dynar_t NetworkModel::getRoute(RoutingEdgePtr src, RoutingEdgePtr dst) -{ - xbt_dynar_t route = NULL; - routing_platf->getRouteAndLatency(src, dst, &route, NULL); - return route; -} +surf_callback(void, NetworkLinkPtr) networkLinkCreatedCallbacks; +surf_callback(void, NetworkLinkPtr) networkLinkDestructedCallbacks; +surf_callback(void, NetworkLinkPtr) networkLinkStateChangedCallbacks; +surf_callback(void, NetworkActionPtr) networkActionStateChangedCallbacks; + +/********* + * Model * + *********/ + +NetworkModelPtr surf_network_model = NULL; double NetworkModel::latencyFactor(double /*size*/) { return sg_latency_factor; @@ -34,9 +40,16 @@ double NetworkModel::bandwidthConstraint(double rate, double /*bound*/, double / return rate; } +/************ + * Resource * + ************/ + NetworkLink::NetworkLink(NetworkModelPtr model, const char *name, xbt_dict_t props) -: p_latEvent(NULL) -{} +: Resource(model, name, props) +, p_latEvent(NULL) +{ + surf_callback_emit(networkLinkCreatedCallbacks, this); +} NetworkLink::NetworkLink(NetworkModelPtr model, const char *name, xbt_dict_t props, lmm_constraint_t constraint, @@ -45,10 +58,16 @@ NetworkLink::NetworkLink(NetworkModelPtr model, const char *name, xbt_dict_t pro : Resource(model, name, props, constraint), p_latEvent(NULL) { + surf_callback_emit(networkLinkCreatedCallbacks, this); if (state_trace) p_stateEvent = tmgr_history_add_trace(history, state_trace, 0.0, 0, static_cast(this)); } +NetworkLink::~NetworkLink() +{ + surf_callback_emit(networkLinkDestructedCallbacks, this); +} + bool NetworkLink::isUsed() { return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint()); @@ -69,4 +88,18 @@ bool NetworkLink::isShared() return lmm_constraint_is_shared(getConstraint()); } +void NetworkLink::setState(e_surf_resource_state_t state){ + Resource::setState(state); + surf_callback_emit(networkLinkStateChangedCallbacks, this); +} + +/********** + * Action * + **********/ + +void NetworkAction::setState(e_surf_action_state_t state){ + Action::setState(state); + surf_callback_emit(networkActionStateChangedCallbacks, this); +} + #endif /* NETWORK_INTERFACE_CPP_ */