maxminSystem_ = lmm_system_new(selectiveUpdate_);
- routing_model_create(createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr));
+ routing_model_create(createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
if (updateMechanism_ == UM_LAZY) {
actionHeap_ = xbt_heap_new(8, nullptr);
NetworkCm02Model::~NetworkCm02Model() {}
-Link* NetworkCm02Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties)
+Link* NetworkCm02Model::createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy)
{
- return new NetworkCm02Link(this, name, properties, bandwidth, latency, policy, maxminSystem_);
+ return new NetworkCm02Link(this, name, bandwidth, latency, policy, maxminSystem_);
}
void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
/************
* Resource *
************/
-NetworkCm02Link::NetworkCm02Link(NetworkCm02Model* model, const char* name, xbt_dict_t props, double bandwidth,
- double latency, e_surf_link_sharing_policy_t policy, lmm_system_t system)
- : Link(model, name, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth), props)
+NetworkCm02Link::NetworkCm02Link(NetworkCm02Model* model, const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy, lmm_system_t system)
+ : Link(model, name, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth))
{
bandwidth_.scale = 1.0;
bandwidth_.peak = bandwidth;
NetworkCm02Model();
explicit NetworkCm02Model(void (*solve_fun)(lmm_system_t self));
virtual ~NetworkCm02Model();
- Link* createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties) override;
+ Link* createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy) override;
void updateActionsStateLazy(double now, double delta) override;
void updateActionsStateFull(double now, double delta) override;
Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
class NetworkCm02Link : public Link {
public:
- NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_dict_t props,
- double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
- lmm_system_t system);
+ NetworkCm02Link(NetworkCm02Model* model, const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy, lmm_system_t system);
~NetworkCm02Link() override;
void apply_event(tmgr_trace_iterator_t event, double value) override;
void setBandwidth(double value) override;
namespace simgrid {
namespace surf {
- Link* NetworkConstantModel::createLink(const char *name, double bw, double lat, e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties) {
+ Link* NetworkConstantModel::createLink(const char* name, double bw, double lat, e_surf_link_sharing_policy_t policy)
+ {
- xbt_die("Refusing to create the link %s: there is no link in the Constant network model. "
- "Please remove any link from your platform (and switch to routing='None')", name);
- return nullptr;
+ xbt_die("Refusing to create the link %s: there is no link in the Constant network model. "
+ "Please remove any link from your platform (and switch to routing='None')",
+ name);
+ return nullptr;
}
double NetworkConstantModel::nextOccuringEvent(double /*now*/)
double nextOccuringEvent(double now) override;
void updateActionsState(double now, double delta) override;
- Link* createLink(const char *name, double bw, double lat, e_surf_link_sharing_policy_t policy, xbt_dict_t properties) override;
+ Link* createLink(const char* name, double bw, double lat, e_surf_link_sharing_policy_t policy) override;
};
/**********
* Resource *
************/
- Link::Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint, xbt_dict_t props)
- : Resource(model, name, constraint), PropertyHolder(props)
+ Link::Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint)
+ : Resource(model, name, constraint), PropertyHolder(nullptr)
{
if (strcmp(name,"__loopback__"))
xbt_assert(!Link::byName(name), "Link '%s' declared several times in the platform.", name);
* @param bandwidth The initial bandwidth of the Link in bytes per second
* @param latency The initial latency of the Link in seconds
* @param policy The sharing policy of the Link
- * @param props Dictionary of properties associated to this Link
*/
- virtual Link* createLink(const char *name, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy, xbt_dict_t properties)=0;
+ virtual Link* createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy) = 0;
/**
* @brief Create a communication between two hosts.
public:
/** @brief Constructor of LMM links */
- Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint, xbt_dict_t props);
+ Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint);
/* Link destruction logic */
/**************************/
xbt_dict_free(&flowFromSock);
}
-Link* NetworkNS3Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties){
-
- return new LinkNS3(this, name, properties, bandwidth, latency);
+Link* NetworkNS3Model::createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy)
+{
+ return new LinkNS3(this, name, bandwidth, latency);
}
Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
* Resource *
************/
-LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, xbt_dict_t props, double bandwidth, double latency)
- : Link(model, name, nullptr, props)
+LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency)
+ : Link(model, name, nullptr)
{
bandwidth_.peak = bandwidth;
latency_.peak = latency;
public:
NetworkNS3Model();
~NetworkNS3Model();
- Link* createLink(const char *name, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy, xbt_dict_t properties) override;
+ Link* createLink(const char* name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy) override;
Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
double nextOccuringEvent(double now) override;
bool nextOccuringEventIsIdempotent() {return false;}
************/
class LinkNS3 : public Link {
public:
- LinkNS3(NetworkNS3Model *model, const char *name, xbt_dict_t props, double bandwidth, double latency);
+ explicit LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency);
~LinkNS3();
void apply_event(tmgr_trace_iterator_t event, double value) override;
surf_network_model = new NetworkL07Model(this,maxminSystem_);
surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_);
- routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr));
+ routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
}
HostL07Model::~HostL07Model() = default;
return new CpuL07(this, host, speedPerPstate, core);
}
-Link* NetworkL07Model::createLink(const char *name, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy, xbt_dict_t properties)
+Link* NetworkL07Model::createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy)
{
- return new LinkL07(this, name, properties, bandwidth, latency, policy);
+ return new LinkL07(this, name, bandwidth, latency, policy);
}
/************
CpuL07::~CpuL07()=default;
-LinkL07::LinkL07(NetworkL07Model* model, const char* name, xbt_dict_t props, double bandwidth, double latency,
+LinkL07::LinkL07(NetworkL07Model* model, const char* name, double bandwidth, double latency,
e_surf_link_sharing_policy_t policy)
- : Link(model, name, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth), props)
+ : Link(model, name, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth))
{
bandwidth_.peak = bandwidth;
latency_.peak = latency;
public:
NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys);
~NetworkL07Model();
- Link* createLink(const char *name, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties) override;
+ Link* createLink(const char* name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy) override;
Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
class LinkL07 : public Link {
public:
- LinkL07(NetworkL07Model *model, const char* name, xbt_dict_t props,
- double bandwidth, double latency, e_surf_link_sharing_policy_t policy);
+ LinkL07(NetworkL07Model* model, const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy);
~LinkL07(){ };
bool isUsed() override;
void apply_event(tmgr_trace_iterator_t event, double value) override;
names.push_back(xbt_strdup(link->id));
}
for (auto link_name : names) {
- Link *l = surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy, link->properties);
+ Link* l = surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy);
+
+ if (link->properties) {
+ xbt_dict_cursor_t cursor = nullptr;
+ char *key, *data;
+ xbt_dict_foreach (link->properties, cursor, key, data)
+ l->setProperty(key, data);
+ xbt_dict_free(&link->properties);
+ }
if (link->latency_trace)
l->setLatencyTrace(link->latency_trace);