Stride Reference Manual  1.0
AsyncSimulator.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <future>
4 #include <vector>
5 #include <string>
6 #include <cstdlib>
7 #include <iostream>
8 
9 #include "util/GeoCoordinate.h"
10 #include "util/SimplePlanner.h"
11 #include "core/Cluster.h"
12 #include "Simulator.h"
13 #include "SimulatorStatus.h"
14 
15 namespace stride {
16 
17 using namespace std;
18 using namespace util;
19 
21 public:
22  virtual string getName() const = 0;
23 
24  virtual future<SimulatorStatus> timeStep() = 0;
25 
26  virtual void welcomeHomeTravellers(const pair<vector<uint>, vector<Health>>& travellers) = 0;
27 
33  virtual void hostForeignTravellers(const vector<stride::Simulator::TravellerType>& travellers, uint days,
34  const string& destination_district, const string& destination_facility) = 0;
35 
43  virtual void
44  sendNewTravellers(uint amount, uint days, const string& destination_sim_id, const string& destination_district,
45  const string& destination_facility) = 0;
46 
48  virtual void returnForeignTravellers() = 0;
49 
50  virtual ~AsyncSimulator() {};
51 
52 private:
55  // TODO remove?
56  virtual void
57  sendNewTravellers(const vector<Simulator::TravellerType>& travellers, uint days, const string& destination_sim_id,
58  const string& destination_district, const string& destination_facility) = 0;
59 
62  // TODO remove?
63  virtual void
64  returnForeignTravellers(const pair<vector<uint>, vector<Health>>& travellers, const string& home_sim_id) = 0;
65 
66 };
67 
68 }
unsigned int uint
Definition: Influence.h:17
Time Dependent Person DataType.
Definition: NoBehaviour.h:17
Header for the Simulator class.
STL namespace.
Header for the core Cluster class.