Stride Reference Manual  1.0
LocalSimulatorAdapter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <future>
4 #include <map>
5 #include <iostream>
6 #include <string>
7 
8 #include "AsyncSimulator.h"
9 #include "Simulator.h"
10 #include "SimulatorStatus.h"
11 #include "util/SimplePlanner.h"
12 #include "pop/Traveller.h"
13 
14 #include "util/Subject.h"
15 #include "core/ClusterType.h"
16 
17 
18 namespace stride {
19 
20 class Coordinator;
21 
22 class ClusterSaver;
23 
24 template<ClusterType clusterType>
26 
27 using namespace std;
28 using namespace util;
29 
31 public:
33  LocalSimulatorAdapter(shared_ptr<Simulator> sim);
34 
35  virtual string getName() const override { return m_sim->getName(); };
36 
37  virtual future<SimulatorStatus> timeStep() override;
38 
39  virtual void welcomeHomeTravellers(const pair<vector<uint>, vector<Health>>& travellers) override;
40 
47  virtual void hostForeignTravellers(const vector<stride::Simulator::TravellerType>& travellers, uint days,
48  const string& destination_district, const string& destination_facility) override;
49 
57  virtual void
58  sendNewTravellers(uint amount, uint days, const string& destination_sim_id, const string& destination_district,
59  const string& destination_facility) override;
60 
61  virtual void returnForeignTravellers() override;
62 
63  const Simulator& getSimulator() const { return *m_sim; }
64 
65 private:
66  Simulator* m_sim = nullptr;
67 
70  virtual void
71  sendNewTravellers(const vector<Simulator::TravellerType>& travellers, uint days, const string& destination_sim_id,
72  const string& destination_district, const string& destination_facility) override;
73 
76  virtual void
77  returnForeignTravellers(const pair<vector<uint>, vector<Health>>& travellers, const string& home_sim_id) override;
78 
79  friend class Simulator;
80 
81  friend class Coordinator;
82 
83  template<ClusterType clusterType>
84  friend
85  class ClusterCalculator;
86 };
87 
88 }
Interface/Implementation of Subject.
unsigned int uint
Definition: Influence.h:17
Time Dependent Person DataType.
Definition: NoBehaviour.h:17
virtual string getName() const override
Header for the Simulator class.
Definition of ClusterType.
const Simulator & getSimulator() const
STL namespace.
Main class that contains and direct the virtual world.
Definition: Simulator.h:64