X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2c01336cbfb90976b513b71718a748b3a01a8e6a..9451efc97c14403a6f030ce37a2269b2b9491b7e:/src/surf/trace_mgr.hpp diff --git a/src/surf/trace_mgr.hpp b/src/surf/trace_mgr.hpp index 902ee0934e..d78d4de20d 100644 --- a/src/surf/trace_mgr.hpp +++ b/src/surf/trace_mgr.hpp @@ -13,11 +13,6 @@ SG_BEGIN_DECL() -typedef struct tmgr_event { - double delta; - double value; -} s_tmgr_event_t, *tmgr_event_t; - /* Iterator within a trace */ typedef struct tmgr_trace_event { tmgr_trace_t trace; @@ -27,9 +22,6 @@ typedef struct tmgr_trace_event { } s_tmgr_trace_event_t; typedef struct tmgr_trace_event* tmgr_trace_event_t; -/* Creation functions */ -XBT_PUBLIC(tmgr_trace_t) tmgr_empty_trace_new(void); -XBT_PUBLIC(void) tmgr_trace_free(tmgr_trace_t trace); /** * \brief Free a trace event structure * @@ -39,7 +31,7 @@ XBT_PUBLIC(void) tmgr_trace_free(tmgr_trace_t trace); */ XBT_PUBLIC(void) tmgr_trace_event_unref(tmgr_trace_event_t* trace_event); -XBT_PUBLIC(void) tmgr_finalize(void); +XBT_PUBLIC(void) tmgr_finalize(); XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new_from_file(const char* filename); XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new_from_string(const char* id, std::string input, double periodicity); @@ -48,17 +40,31 @@ SG_END_DECL() #ifdef __cplusplus namespace simgrid { -/** @brief Modeling of the resource variations, such as those due to an external load +/** @brief Modeling of the availability profile (due to an external load) or the churn * - * There is 3 main concepts in this module: - * - #trace: a set of dated values, ie a list of pair - * - #trace_iterator: links a given trace to a given simgrid resource. A Cpu for example has 2 iterators: state (ie, is it ON/OFF) and speed, while a link has 3 iterators: state, bandwidth and latency. + * There is 4 main concepts in this module: + * - #DatedValue: a pair (both are of type double) + * - #trace: a list of dated values + * - #trace_event: links a given trace to a given SimGrid resource. + * A Cpu for example has 2 kinds of events: state (ie, is it ON/OFF) and speed, + * while a link has 3 iterators: state, bandwidth and latency. * - #future_evt_set: makes it easy to find the next occuring event of all traces */ - namespace trace_mgr { +namespace trace_mgr { +XBT_PUBLIC_CLASS DatedValue +{ +public: + double date_ = 0; + double value_ = 0; + explicit DatedValue() = default; + explicit DatedValue(double d, double v) : date_(d), value_(v) {} + bool operator==(DatedValue e2); + bool operator!=(DatedValue e2) { return not(*this == e2); } +}; +std::ostream& operator<<(std::ostream& out, const DatedValue& e); /** @brief A trace_iterator links a trace to a resource */ -XBT_PUBLIC_CLASS trace_iterator { +XBT_PUBLIC_CLASS trace_event{ }; @@ -70,10 +76,10 @@ XBT_PUBLIC_CLASS trace_iterator { XBT_PUBLIC_CLASS trace { public: /** Creates an empty trace */ - trace(); + explicit trace(); virtual ~trace(); //private: - std::vector event_list; + std::vector event_list; }; /** @brief Future Event Set (collection of iterators over the traces) @@ -88,7 +94,7 @@ public: private: // TODO: use a boost type for the heap (or a ladder queue) - xbt_heap_t p_heap = xbt_heap_new(8, xbt_free_f); /* Content: only trace_events (yep, 8 is an arbitrary value) */ + xbt_heap_t heap_ = xbt_heap_new(8, xbt_free_f); /* Content: only trace_events (yep, 8 is an arbitrary value) */ }; }} // namespace simgrid::trace_mgr