-/* Copyright (c) 2004-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2018. 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. */
#ifndef SURF_NETWORK_INTERFACE_HPP_
#define SURF_NETWORK_INTERFACE_HPP_
+#include "simgrid/kernel/resource/Model.hpp"
+#include "simgrid/kernel/resource/Resource.hpp"
#include "simgrid/s4u/Link.hpp"
+#include "src/kernel/lmm/maxmin.hpp"
#include "src/surf/PropertyHolder.hpp"
#include "src/surf/surf_interface.hpp"
#include "xbt/base.h"
+
#include <list>
#include <unordered_map>
* @brief SURF network model interface class
* @details A model is an object which handles the interactions between its Resources and its Actions
*/
-class NetworkModel : public Model {
+class NetworkModel : public kernel::resource::Model {
public:
/** @brief Constructor */
NetworkModel() : Model() {}
* unlimited.
* @return The action representing the communication
*/
- virtual Action* communicate(simgrid::s4u::Host* src, simgrid::s4u::Host* dst, double size, double rate) = 0;
-
- /** @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) = lmm_solve;
+ virtual kernel::resource::Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) = 0;
/**
* @brief Get the right multiplicative factor for the latency.
* @return The new bandwidth.
*/
virtual double bandwidthConstraint(double rate, double bound, double size);
- double nextOccuringEventFull(double now) override;
+ double next_occuring_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 simgrid::surf::Resource, public simgrid::surf::PropertyHolder {
+class LinkImpl : public simgrid::kernel::resource::Resource, public simgrid::surf::PropertyHolder {
protected:
- LinkImpl(simgrid::surf::NetworkModel* model, const std::string& name, lmm_constraint_t constraint);
+ LinkImpl(simgrid::surf::NetworkModel* model, const std::string& name, kernel::lmm::Constraint* constraint);
~LinkImpl() override;
public:
virtual void setLatency(double value) = 0;
/** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2:
- * FULLDUPLEX) */
+ * SPLITDUPLEX) */
virtual int sharingPolicy();
/** @brief Check if the Link is used */
Trace must contain absolute values */
tmgr_trace_event_t stateEvent_ = nullptr;
- s_surf_metric_t latency_ = {1.0, 0, nullptr};
- s_surf_metric_t bandwidth_ = {1.0, 0, nullptr};
+ Metric latency_ = {1.0, 0, nullptr};
+ Metric bandwidth_ = {1.0, 0, nullptr};
/* User data */
void* getData() { return userData; }
* @brief SURF network action interface class
* @details A NetworkAction represents a communication between two [hosts](\ref HostImpl)
*/
-class NetworkAction : public simgrid::surf::Action {
+class NetworkAction : public simgrid::kernel::resource::Action {
public:
/** @brief Constructor
*
* @param cost The cost of this NetworkAction in [TODO]
* @param failed [description]
*/
- NetworkAction(simgrid::surf::Model* model, double cost, bool failed) : simgrid::surf::Action(model, cost, failed) {}
+ NetworkAction(simgrid::kernel::resource::Model* model, double cost, bool failed)
+ : simgrid::kernel::resource::Action(model, cost, failed)
+ {
+ }
/**
* @brief NetworkAction constructor
* @param failed [description]
* @param var The lmm variable associated to this Action if it is part of a LMM component
*/
- NetworkAction(simgrid::surf::Model* model, double cost, bool failed, lmm_variable_t var)
- : simgrid::surf::Action(model, cost, failed, var){};
+ NetworkAction(simgrid::kernel::resource::Model* model, double cost, bool failed, kernel::lmm::Variable* var)
+ : simgrid::kernel::resource::Action(model, cost, failed, var){};
- void setState(simgrid::surf::Action::State state) override;
+ void set_state(simgrid::kernel::resource::Action::State state) override;
virtual std::list<LinkImpl*> links();
double latency_ = {};