summaryrefslogtreecommitdiff
path: root/Simulator/include/simulation/history/SimulationHistory.h
diff options
context:
space:
mode:
authorMDBijman <matthijs@bijman.org>2017-01-24 12:15:26 +0100
committerMDBijman <matthijs@bijman.org>2017-01-24 12:15:26 +0100
commit070ce923574dcc57435cb3fb2dfe86b6a38cd249 (patch)
treeffd69a842ac4ad22aaf7161f923b9f0b47c7147a /Simulator/include/simulation/history/SimulationHistory.h
Initial code commit with organized dependencies
Diffstat (limited to 'Simulator/include/simulation/history/SimulationHistory.h')
-rw-r--r--Simulator/include/simulation/history/SimulationHistory.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/Simulator/include/simulation/history/SimulationHistory.h b/Simulator/include/simulation/history/SimulationHistory.h
new file mode 100644
index 00000000..f43968b7
--- /dev/null
+++ b/Simulator/include/simulation/history/SimulationHistory.h
@@ -0,0 +1,81 @@
+#pragma once
+#include "History.h"
+#include "WorkloadSnapshot.h"
+#include "MachineSnapshot.h"
+
+#include <unordered_map>
+
+namespace Simulation
+{
+ using WorkloadHistory = History<WorkloadSnapshot>;
+ using MachineHistory = History<MachineSnapshot>;
+ using HistoryRef = std::tuple<std::reference_wrapper<WorkloadHistory>, std::reference_wrapper<MachineHistory>>;
+
+ class SimulationHistory
+ {
+ public:
+ /*
+ Adds the workload snapshot at the given tick.
+ */
+ void addSnapshot(uint32_t tick, WorkloadSnapshot snapshots)
+ {
+ workloadHistory.addSnapshotAtTick(tick, snapshots);
+ }
+
+ /*
+ Adds the machine snapshot at the given tick.
+ */
+ void addSnapshot(uint32_t tick, MachineSnapshot snapshots)
+ {
+ machineHistory.addSnapshotAtTick(tick, snapshots);
+ }
+
+ /*
+ Returns the equal_range of the workload snapshots at the given tick.
+ */
+ auto getWorkloadSnapshot(uint32_t tick)
+ {
+ return workloadHistory.snapshotsAtTick(tick);
+ }
+
+ /*
+ Returns the equal_range of the machine snapshots at the given tick.
+ */
+ auto getMachineSnapshot(uint32_t tick)
+ {
+ return machineHistory.snapshotsAtTick(tick);
+ }
+
+ /*
+ Returns a const tuple ref of the entire cached history of machines and workloads.
+ */
+ const HistoryRef getHistory()
+ {
+ return std::make_tuple(
+ std::ref(workloadHistory),
+ std::ref(machineHistory)
+ );
+ }
+
+ /*
+ Clears the cache of history.
+ */
+ void clearHistory()
+ {
+ workloadHistory.clear();
+ machineHistory.clear();
+ }
+
+ /*
+ Returns the number of snapshots that are in the history cache.
+ */
+ size_t historySize()
+ {
+ return workloadHistory.size();
+ }
+
+ private:
+ WorkloadHistory workloadHistory;
+ MachineHistory machineHistory;
+ };
+} \ No newline at end of file