8 : m_count(1), m_id_mpi(remote_id), m_name(name) {}
11 std::cout <<
"Timestep @ RemoteSimulatorSender" << std::endl;
15 std::cout <<
"Sending message to remote sim @process " << m_id_mpi << std::endl;
16 MPI_Send(
nullptr, 0, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
17 MPI_Recv(&data, m_count, m_simulator_status, m_id_mpi, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
18 std::cout <<
"Received message from remote sim @process " << m_id_mpi << std::endl;
26 MPI_Send(&data, m_count, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
30 const string& destination_district,
31 const string& destination_facility) {
33 uint amount = travellers.size();
34 TravelData data {travellers, amount, days, m_name, destination_district, destination_facility};
35 MPI_Send(&data, m_count, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
40 const string& destination_district,
const string& destination_facility) {
42 std::vector<Simulator::TravellerType> travellers;
44 TravelData data {travellers, amount, days, m_name, destination_district, destination_facility};
45 MPI_Send(&data, m_count, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
50 MPI_Send(
nullptr, 0, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
55 const string& destination_sim_id,
const string& destination_district,
56 const string& destination_facility) {
58 uint amount = travellers.size();
60 TravelData data {travellers, amount, days, m_name, destination_district, destination_facility};
61 MPI_Send(&data, m_count, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
65 const string& home_sim_id) {
68 MPI_Send(&data, m_count, MPI_INT, m_id_mpi, tag, MPI_COMM_WORLD);
72 MPI_Datatype type[2] = {MPI_INT, MPI_INT};
74 int blocklen[2] = {1, 1};
80 MPI_Type_create_struct(2, blocklen, disp, type, &m_simulator_status);
81 MPI_Type_commit(&m_simulator_status);
virtual void hostForeignTravellers(const vector< stride::Simulator::TravellerType > &travellers, uint days, const string &destination_district, const string &destination_facility) override
Receive travellers travellers: the travellers this simulator has to host.
virtual future< SimulatorStatus > timeStep() override
void makeSimulatorStatus()
Time Dependent Person DataType.
virtual void sendNewTravellers(uint amount, uint days, const string &destination_sim_id, const string &destination_district, const string &destination_facility) override
Commands to send an amount of travellers to another region The Simulator will have to take action...
virtual void welcomeHomeTravellers(const pair< vector< uint >, vector< Health >> &travellers) override
RemoteSimulatorSender(const string &m_name, const int mpi_id)
virtual void returnForeignTravellers() override
Return foreign people that would return today, signals the Simulator to return today's travellers...