-/* Copyright (c) 2004-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2020. 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 "simgrid/kernel/resource/Resource.hpp"
#include "simgrid/s4u/Link.hpp"
#include "src/kernel/lmm/maxmin.hpp"
-#include "src/surf/PropertyHolder.hpp"
+#include <xbt/PropertyHolder.hpp>
#include <list>
#include <unordered_map>
* @param latency The initial latency of the Link in seconds
* @param policy The sharing policy of the Link
*/
- virtual LinkImpl* create_link(const std::string& name, double bandwidth, double latency,
+ virtual LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidths, double latency,
s4u::Link::SharingPolicy policy) = 0;
/**
* @return The new bandwidth.
*/
virtual double get_bandwidth_constraint(double rate, double bound, double size);
- double next_occuring_event_full(double now) override;
+ double next_occurring_event_full(double now) override;
LinkImpl* loopback_ = nullptr;
};
* @brief SURF network link interface class
* @details A Link represents the link between two [hosts](@ref simgrid::surf::HostImpl)
*/
-class LinkImpl : public Resource, public surf::PropertyHolder {
+class LinkImpl : public Resource, public xbt::PropertyHolder {
bool currently_destroying_ = false;
- void* userdata_ = nullptr;
+ s4u::Link piface_;
protected:
LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint);
public:
void destroy(); // Must be called instead of the destructor
- void* get_data() { return userdata_; }
- void set_data(void* d) { userdata_ = d; }
/** @brief Public interface */
- s4u::Link piface_;
+ s4u::Link* get_iface() { return &piface_; }
/** @brief Get the bandwidth in bytes per second of current Link */
virtual double get_bandwidth();
latency changes due to external load). Trace must contain
absolute values */
- Metric latency_ = {1.0, 0, nullptr};
+ Metric latency_ = {0.0, 0, nullptr};
Metric bandwidth_ = {1.0, 0, nullptr};
-
- /** @brief A link can have several bandwith attach to it (mostly use by wifi model) */
- std::vector<Metric> bandwidths_;
};
/**********