-/* Copyright (c) 2004-2014. The SimGrid Team.
+/* Copyright (c) 2004-2015. 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 <boost/unordered_map.hpp>
#include "xbt/fifo.h"
+#include "xbt/dict.h"
#include "surf_interface.hpp"
#include "surf_routing.hpp"
#include "simgrid/link.h"
-#ifndef SURF_NETWORK_INTERFACE_HPP_
-#define SURF_NETWORK_INTERFACE_HPP_
-
/***********
* Classes *
***********/
class NetworkModel : public Model {
public:
/** @brief Constructor */
- NetworkModel() : Model("network") { }
+ NetworkModel() : Model() { }
- /** @brief Constructor */
- NetworkModel(const char *name) : Model(name) { }
-
- /** @brief The destructor of the NetworkModel */
+ /** @brief Destructor */
~NetworkModel() {
if (p_maxminSystem)
lmm_system_free(p_maxminSystem);
e_surf_link_sharing_policy_t policy,
xbt_dict_t properties)=0;
- virtual void gapAppend(double /*size*/, const Link* /*link*/, NetworkAction */*action*/) {};
-
/**
* @brief Create a communication between two hosts.
* @details It makes calls to the routing part, and execute the communication
*/
virtual double bandwidthConstraint(double rate, double bound, double size);
double shareResourcesFull(double now);
- bool m_haveGap = false;
};
/************
/** @brief Update the latency in seconds of current Link */
virtual void updateLatency(double value, double date=surf_get_clock())=0;
- /**
- * @brief Check if the Link is shared
- *
- * @return true if the current NetwokrLink is shared, false otherwise
- */
- virtual bool isShared();
+ /** @brief The sharing policy is a @e_surf_link_sharing_policy_t (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
+ virtual int sharingPolicy();
/** @brief Check if the Link is used */
bool isUsed();
*/
class NetworkAction : public Action {
public:
- /**
- * @brief NetworkAction constructor
+ /** @brief Constructor
*
* @param model The NetworkModel associated to this NetworkAction
* @param cost The cost of this NetworkAction in [TODO]
double m_weight;
double m_rate;
const char* p_senderLinkName;
- double m_senderGap;
double m_senderSize;
xbt_fifo_item_t p_senderFifoItem;
#ifdef HAVE_LATENCY_BOUND_TRACKING