-/* Copyright (c) 2004-2015. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2004-2016. 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 <boost/function.hpp>
#include <boost/intrusive/list.hpp>
-#include "surf/trace_mgr.h"
+
+#include <xbt/signal.hpp>
+
#include "xbt/lib.h"
#include "surf/surf_routing.h"
#include "simgrid/platf_interface.h"
#include "surf/surf.h"
#include "src/surf/surf_private.h"
+#include "src/surf/trace_mgr.hpp"
#include "src/internal_config.h"
-#ifdef LIBSIGC
-#include <sigc++/sigc++.h>
-namespace simgrid {
-namespace surf {
- // Wraps sigc++ signals with the interface of boost::signals2:
- template<class T> class signal;
- template<class R, class... P>
- class signal<R(P...)> {
- private:
- sigc::signal<R, P...> sig_;
- public:
- template<class T> XBT_ALWAYS_INLINE
- void connect(T&& slot)
- {
- sig_.connect(std::forward<T>(slot));
- }
- template<class Res, class... Args> XBT_ALWAYS_INLINE
- void connect(Res(*slot)(Args...))
- {
- sig_.connect(sigc::ptr_fun(slot));
- }
- template<class... Args>
- R operator()(Args&&... args) const
- {
- return sig_.emit(std::forward<Args>(args)...);
- }
- };
-}
-}
-#else
-#include <boost/signals2.hpp>
-namespace simgrid {
-namespace surf {
- template<class T>
- using signal = ::boost::signals2::signal<T>;
-}
-}
-#endif
-
-extern XBT_PRIVATE tmgr_history_t history;
+extern XBT_PRIVATE sg_future_evt_set_t future_evt_set;
#define NO_MAX_DURATION -1.0
/*********
namespace simgrid {
namespace surf {
-extern XBT_PRIVATE simgrid::surf::signal<void(void)> surfExitCallbacks;
+extern XBT_PRIVATE simgrid::xbt::signal<void(void)> surfExitCallbacks;
}
}
/* For the trace and trace:connect tag (store their content till the end of the parsing) */
XBT_PUBLIC_DATA(xbt_dict_t) traces_set_list;
XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_host_avail;
-XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_power;
+XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_host_speed;
XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_link_avail;
-XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_bandwidth;
-XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_latency;
+XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_link_bw;
+XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_link_lat;
/**********
* Action *
protected:
ActionLmmListPtr p_modifiedSet;
- lmm_system_t p_maxminSystem;
+ lmm_system_t p_maxminSystem = nullptr;
e_UM_t p_updateMechanism = UM_UNDEFINED;
int m_selectiveUpdate;
xbt_heap_t p_actionHeap;
typedef struct {
double peak; /**< The peak of the metric, ie its max value */
double scale; /**< Current availability of the metric according to the traces, in [0,1] */
- tmgr_trace_event_t event; /**< The associated trace event associated to the metric */
+ tmgr_trace_iterator_t event; /**< The associated trace event associated to the metric */
} s_surf_metric_t;
namespace simgrid {
*/
XBT_PUBLIC_CLASS Resource {
public:
- Resource();
-
/**
* @brief Constructor of non-LMM Resources
*
*/
Resource(Model *model, const char *name, lmm_constraint_t constraint);
- Resource(Model *model, const char *name, lmm_constraint_t constraint, e_surf_resource_state_t stateInit);
+ Resource(Model *model, const char *name, lmm_constraint_t constraint, int initiallyOn);
/**
* @brief Resource constructor
*
* @param model Model associated to this Resource
* @param name The name of the Resource
- * @param stateInit the initial state of the Resource
+ * @param initiallyOn the initial state of the Resource
*/
- Resource(Model *model, const char *name, e_surf_resource_state_t stateInit);
+ Resource(Model *model, const char *name, int initiallyOn);
virtual ~Resource();
* @param value [TODO]
* @param date [TODO]
*/
- virtual void updateState(tmgr_trace_event_t event_type, double value, double date)=0;
+ virtual void updateState(tmgr_trace_iterator_t event_type, double value, double date)=0;
/** @brief Check if the current Resource is used (if it currently serves an action) */
virtual bool isUsed()=0;
/** @brief Check if the current Resource is active */
- bool isOn();
+ virtual bool isOn();
+ /** @brief Check if the current Resource is shut down */
+ virtual bool isOff();
/** @brief Turn on the current Resource */
- void turnOn();
+ virtual void turnOn();
/** @brief Turn off the current Resource */
- void turnOff();
-
- /** @brief Get the [state](\ref e_surf_resource_state_t) of the current Resource */
- virtual e_surf_resource_state_t getState();
- /** @brief Set the [state](\ref e_surf_resource_state_t) of the current Resource */
- virtual void setState(e_surf_resource_state_t state);
+ virtual void turnOff();
private:
const char *p_name;
Model *p_model;
- bool m_running;
- e_surf_resource_state_t m_stateCurrent;
-
+ bool m_isOn;
public: /* LMM */
/** @brief Get the lmm constraint associated to this Resource if it is part of a LMM component */
lmm_constraint_t getConstraint();
protected:
- lmm_constraint_t p_constraint;
+ lmm_constraint_t p_constraint = nullptr;
};
}