Pakman
mpi-simulator-cpp.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <string>
3 #include <mpi.h>
4 
5 #include "PakmanMPIWorker.hpp"
6 
29 int my_simulator(int argc, char *argv[],
30  const std::string& input_string, std::string& output_string)
31 {
32  // Default output string and error code correspond to simulator that always
33  // accepts and exits without error
34  output_string.assign("accept\n");
35  int error_code = 0;
36 
37  // Print help
38  if (argc == 2 &&
39  ( std::string(argv[1]).compare("--help") == 0
40  || std::string(argv[1]).compare("-h") == 0 ) )
41  {
42  std::cout << "Usage: " << argv[0] << " [OUTPUT_STRING] [ERROR_CODE]\n";
43  return 2;
44  }
45 
46  // Process given output string
47  if (argc >= 2)
48  {
49  output_string.assign(argv[1]);
50 
51  // If output string does not terminate on newline, add one
52  if (output_string.back() != '\n')
53  output_string += '\n';
54  }
55 
56  // Process given error code
57  if (argc >= 3)
58  error_code = std::stoi(argv[2]);
59 
60  // Throw error if more than two arguments are given
61  if (argc > 3)
62  {
63  std::cerr << "Error: too many arguments given. Try "
64  << argv[0] << " --help.\n";
65  return 2;
66  }
67 
68  // Return exit code
69  return error_code;
70 }
71 
72 int main(int argc, char *argv[])
73 {
74  // Initialize MPI
75  MPI_Init(nullptr, nullptr);
76 
77  // Create MPI Worker
79 
80  // Run MPI Worker
81  worker.run(argc, argv);
82 
83  // Finalize MPI
84  MPI_Finalize();
85 
86  return 0;
87 }
int my_simulator(int argc, char *argv[], const std::string &input_string, std::string &output_string)
int run(int argc, char *argv[])