-/* Copyright (c) 2004-2015. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2004-2017. 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 <xbt/base.h>
-
-#include <unordered_map>
-
-#include "xbt/fifo.h"
-#include "xbt/dict.h"
-#include "surf_interface.hpp"
+#include "simgrid/s4u/Link.hpp"
#include "src/surf/PropertyHolder.hpp"
-
-#include "simgrid/link.h"
-#include "simgrid/s4u/link.hpp"
+#include "src/surf/surf_interface.hpp"
+#include "xbt/base.h"
+#include <list>
+#include <unordered_map>
/***********
* Classes *
namespace simgrid {
namespace surf {
-
- class NetworkAction;
-
- /** @brief Callback signal fired when the state of a NetworkAction changes
- * Signature: `void(NetworkAction *action, simgrid::surf::Action::State old, simgrid::surf::Action::State current)` */
- XBT_PUBLIC_DATA(simgrid::xbt::signal<void(simgrid::surf::NetworkAction*, simgrid::surf::Action::State, simgrid::surf::Action::State)>) networkActionStateChangedCallbacks;
-
/*********
* Model *
*********/
* @details A Link represents the link between two [hosts](\ref simgrid::surf::HostImpl)
*/
class LinkImpl : public simgrid::surf::Resource, public simgrid::surf::PropertyHolder {
- public:
- /** @brief Constructor of LMM links */
- LinkImpl(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint);
-
- /* Link destruction logic */
- /**************************/
protected:
+ LinkImpl(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint);
~LinkImpl() override;
public:
void destroy(); // Must be called instead of the destructor
public:
/** @brief Public interface */
s4u::Link piface_;
- /** @brief Callback signal fired when a new Link is created */
- static simgrid::xbt::signal<void(surf::LinkImpl*)> onCreation;
-
- /** @brief Callback signal fired when a Link is destroyed */
- static simgrid::xbt::signal<void(surf::LinkImpl*)> onDestruction;
-
- /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off) */
- static simgrid::xbt::signal<void(surf::LinkImpl*)> onStateChange;
-
- /** @brief Callback signal fired when a communication starts */
- static simgrid::xbt::signal<void(surf::NetworkAction*, s4u::Host* src, s4u::Host* dst)> onCommunicate;
/** @brief Get the bandwidth in bytes per second of current Link */
virtual double bandwidth();
: simgrid::surf::Action(model, cost, failed, var) {};
void setState(simgrid::surf::Action::State state) override;
+ std::list<LinkImpl*> links();
double latency_;
double latCurrent_;
double weight_;
double rate_;
- const char* senderLinkName_;
- double senderSize_;
- xbt_fifo_item_t senderFifoItem_;
};
}
}