-/* 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. */
private:
sigc::signal<R, P...> sig_;
public:
- template<class T> XBT_ALWAYS_INLINE
- void connect(T&& slot)
+ template<class U> XBT_ALWAYS_INLINE
+ void connect(U&& slot)
{
- sig_.connect(std::forward<T>(slot));
+ sig_.connect(std::forward<U>(slot));
}
template<class Res, class... Args> XBT_ALWAYS_INLINE
void connect(Res(*slot)(Args...))
}
#endif
-// Deprecated:
-#define surf_callback(arg1, ...) ::simgrid::surf::signal<arg1(__VA_ARGS__)>
-#define surf_callback_connect(callback, fun_ptr) callback.connect(fun_ptr)
-#define surf_callback_emit(callback, ...) callback(__VA_ARGS__)
-
-#ifdef _MSC_VER
-#pragma warning( disable : 4251)
-// 4251: needs to have dll-interface to be used by clients of class
-#endif
-
extern XBT_PRIVATE tmgr_history_t history;
#define NO_MAX_DURATION -1.0
namespace simgrid {
namespace surf {
-extern XBT_PRIVATE surf_callback(void, void) surfExitCallbacks;
+extern XBT_PRIVATE simgrid::surf::signal<void(void)> surfExitCallbacks;
}
}
/** @brief Get the state set in which the action is */
ActionList* getStateSet() {return p_stateSet;};
- s_xbt_swag_hookup_t p_stateHookup;
+ s_xbt_swag_hookup_t p_stateHookup = {NULL,NULL};
simgrid::surf::Model *getModel() {return p_model;}
protected:
ActionList* p_stateSet;
- double m_priority; /**< priority (1.0 by default) */
- int m_refcount;
+ double m_priority = 1.0; /**< priority (1.0 by default) */
+ int m_refcount = 1;
double m_remains; /**< How much of that cost remains to be done in the currently running task */
- double m_maxDuration; /*< max_duration (may fluctuate until the task is completed) */
- double m_finish; /**< finish time : this is modified during the run and fluctuates until the task is completed */
+ double m_maxDuration = NO_MAX_DURATION; /*< max_duration (may fluctuate until the task is completed) */
+ double m_finish = -1; /**< finish time : this is modified during the run and fluctuates until the task is completed */
private:
double m_start; /**< start time */
- char *p_category; /**< tracing category for categorized resource utilization monitoring */
+ char *p_category = NULL; /**< tracing category for categorized resource utilization monitoring */
#ifdef HAVE_LATENCY_BOUND_TRACKING
int m_latencyLimited; /**< Set to 1 if is limited by latency, 0 otherwise */
#endif
double m_cost;
simgrid::surf::Model *p_model;
- void *p_data; /**< for your convenience */
+ void *p_data = NULL; /**< for your convenience */
/* LMM */
public:
protected:
lmm_variable_t p_variable;
- double m_lastValue;
- double m_lastUpdate;
- int m_suspended;
+ double m_lastValue = 0;
+ double m_lastUpdate = 0;
+ int m_suspended = 0;
int m_indexHeap;
- enum heap_action_type m_hat;
+ enum heap_action_type m_hat = NOTSET;
};
typedef Action::ActionList ActionList;
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;
*/
XBT_PUBLIC_CLASS Resource {
public:
- Resource();
-
/**
* @brief Constructor of non-LMM Resources
*
* @param model Model associated to this Resource
* @param name The name of the Resource
- * @param props Dictionary of properties associated to this Resource
*/
- Resource(Model *model, const char *name, xbt_dict_t props);
+ Resource(Model *model, const char *name);
/**
* @brief Constructor of LMM Resources
*
* @param model Model associated to this Resource
* @param name The name of the Resource
- * @param props Dictionary of properties associated to this Resource
* @param constraint The lmm constraint associated to this Resource if it is part of a LMM component
*/
- Resource(Model *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint);
+ Resource(Model *model, const char *name, lmm_constraint_t constraint);
- Resource(Model *model, const char *name, xbt_dict_t props, 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 props Dictionary of properties associated to this Resource
- * @param stateInit the initial state of the Resource
+ * @param initiallyOn the initial state of the Resource
*/
- Resource(Model *model, const char *name, xbt_dict_t props, e_surf_resource_state_t stateInit);
+ Resource(Model *model, const char *name, int initiallyOn);
virtual ~Resource();
/** @brief Get the name of the current Resource */
const char *getName();
- /** @brief Get the properties of the current Resource */
- virtual xbt_dict_t getProperties();
-
/**
* @brief Update the state of the current Resource
* @details [TODO]
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;
- xbt_dict_t p_properties;
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();
-private:
- lmm_constraint_t p_constraint;
+protected:
+ lmm_constraint_t p_constraint = nullptr;
};
}