/** @brief Destructor */
~NetworkModel() {
- if (p_maxminSystem)
- lmm_system_free(p_maxminSystem);
- if (p_actionHeap)
- xbt_heap_free(p_actionHeap);
- if (p_modifiedSet)
- delete p_modifiedSet;
+ if (p_maxminSystem)
+ lmm_system_free(p_maxminSystem);
+ if (p_actionHeap)
+ xbt_heap_free(p_actionHeap);
+ if (p_modifiedSet)
+ delete p_modifiedSet;
}
/**
* @param bw_trace The trace associated to the Link bandwidth
* @param lat_initial The initial latency of the Link in seconds
* @param lat_trace The trace associated to the Link latency
- * @param initiallyOn The initial Link (state)[e_surf_resource_state_t]
* @param state_trace The trace associated to the Link (state)[e_surf_resource_state_t]
* @param policy The sharing policy of the Link
* @param properties Dictionary of properties associated to this Resource
tmgr_trace_t bw_trace,
double lat_initial,
tmgr_trace_t lat_trace,
- int initiallyOn,
tmgr_trace_t state_trace,
e_surf_link_sharing_policy_t policy,
xbt_dict_t properties)=0;
* @return The action representing the communication
*/
virtual Action *communicate(NetCard *src, NetCard *dst,
- double size, double rate)=0;
+ double size, double rate)=0;
/** @brief Function pointer to the function to use to solve the lmm_system_t
*
* @return The new bandwidth.
*/
virtual double bandwidthConstraint(double rate, double bound, double size);
- double shareResourcesFull(double now);
+ double next_occuring_event_full(double now) override;
};
/************
* @details A Link represents the link between two [hosts](\ref Host)
*/
class Link :
- public simgrid::surf::Resource,
- public simgrid::surf::PropertyHolder {
+ public simgrid::surf::Resource,
+ public simgrid::surf::PropertyHolder {
public:
/**
* @brief Link constructor
* @param name The name of the Link
* @param props Dictionary of properties associated to this Link
* @param constraint The lmm constraint associated to this Cpu if it is part of a LMM component
- * @param history [TODO]
* @param state_trace [TODO]
*/
Link(simgrid::surf::NetworkModel *model, const char *name, xbt_dict_t props,
lmm_constraint_t constraint,
- tmgr_history_t history,
tmgr_trace_t state_trace);
/* Link destruction logic */
protected:
~Link();
public:
- void destroy(); // Must be called instead of the destructor
+ void destroy(); // Must be called instead of the destructor
private:
- bool currentlyDestroying_ = false;
+ bool currentlyDestroying_ = false;
public:
/** @brief Callback signal fired when a new Link is created.
* Signature: void(Link*) */
static simgrid::xbt::signal<void(simgrid::surf::Link*)> onDestruction;
- /** @brief Callback signal fired when the state of a Link changes
- * Signature: `void(LinkAction *action, int previouslyOn, int currentlyOn)` */
- static simgrid::xbt::signal<void(simgrid::surf::Link*, int, int)> onStateChange;
+ /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off)
+ * Signature: `void(Link*)` */
+ static simgrid::xbt::signal<void(simgrid::surf::Link*)> onStateChange;
/** @brief Get the bandwidth in bytes per second of current Link */
virtual double getBandwidth();
/** @brief Update the bandwidth in bytes per second of current Link */
- virtual void updateBandwidth(double value, double date=surf_get_clock())=0;
+ virtual void updateBandwidth(double value)=0;
/** @brief Get the latency in seconds of current Link */
virtual double getLatency();
/** @brief Update the latency in seconds of current Link */
- virtual void updateLatency(double value, double date=surf_get_clock())=0;
+ virtual void updateLatency(double value)=0;
- /** @brief The sharing policy is a @{link #e_surf_link_sharing_policy_t} (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
+ /** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
virtual int sharingPolicy();
/** @brief Check if the Link is used */
void turnOn() override;
void turnOff() override;
- /* Using this object with the public part of
- model does not make sense */
- double m_latCurrent = 0;
- tmgr_trace_event_t p_latEvent = NULL;
+ virtual void set_state_trace(tmgr_trace_t trace); /*< setup the trace file with states events (ON or OFF). Trace must contain boolean values. */
+ virtual void set_bandwidth_trace(tmgr_trace_t trace); /*< setup the trace file with bandwidth events (peak speed changes due to external load). Trace must contain percentages (value between 0 and 1). */
+ virtual void set_latency_trace(tmgr_trace_t trace); /*< setup the trace file with latency events (peak latency changes due to external load). Trace must contain absolute values */
- /* LMM */
- tmgr_trace_event_t p_stateEvent = NULL;
- s_surf_metric_t p_speed;
+ tmgr_trace_iterator_t m_stateEvent = NULL;
+ s_surf_metric_t m_latency = {1.0,0,NULL};
+ s_surf_metric_t m_bandwidth = {1.0,0,NULL};
/* User data */
public: