// #include "mpi_test_incl.h"
#include <mpi.h>

void mainInit(int* procRank)
{
    MPI::Init_thread(MPI_THREAD_MULTIPLE);
    MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN); // return an exception instead of Fatal Error, which finishes execution of all processes.
    MPI_Comm_rank(MPI_COMM_WORLD, procRank);
}

int main(int argc, char *argv[])
{
    int rank = 0, buf;
    mainInit(&rank);

    int retErr  = MPI_SUCCESS;
    if(rank == 0){
        MPI_Status status;
        retErr = MPI_Recv(&buf, 1, MPI::INT, 1, 0, MPI_COMM_WORLD, &status);
    }
    else {
        MPI_Status status;
        retErr = MPI_Recv(&buf, 1, MPI::INT, 0, 0, MPI_COMM_WORLD, &status);
    }

    retErr = MPI_Finalize();
    return 0;
}
