diff --git a/src/application_map.cc b/src/application_map.cc index ad7421b..80d0168 100644 --- a/src/application_map.cc +++ b/src/application_map.cc @@ -22,6 +22,7 @@ #include "music/mpi_utils.hh" #endif #include "music/ioutils.hh" +#include "music/error.hh" #include #include namespace MUSIC { @@ -55,6 +56,8 @@ namespace MUSIC { void ApplicationMap::add (std::string name, int n, int c) { + if (lookup(name) != NULL) + error ("Application label " + name + " is already used"); push_back (ApplicationInfo (name, n, c)); } diff --git a/src/configuration.cc b/src/configuration.cc index a28064e..0bf1eea 100644 --- a/src/configuration.cc +++ b/src/configuration.cc @@ -131,7 +131,7 @@ namespace MUSIC { applications_->read (env); env.ignore (); std::map leaders = applications_->assignLeaders( Name ()); - connectivityMap_->read (env, leaders); + connectivityMap_->read (env, leaders, applications_); // parse config string while (!env.eof ()) { diff --git a/src/connectivity.cc b/src/connectivity.cc index ce1a1b9..ab3af10 100644 --- a/src/connectivity.cc +++ b/src/connectivity.cc @@ -23,6 +23,7 @@ #include "music/debug.hh" #include "music/connectivity.hh" +#include "music/application_map.hh" #include "music/ioutils.hh" #include "music/error.hh" @@ -175,7 +176,7 @@ namespace MUSIC { void - Connectivity::read (std::istringstream& in, std::map leaders) + Connectivity::read (std::istringstream& in, std::map leaders, ApplicationMap* applications) { int nPorts; in >> nPorts; @@ -198,6 +199,8 @@ namespace MUSIC { { in.ignore (); std::string recApp = IOUtils::read (in); + if (applications->lookup(recApp) == NULL) + error ("Connection to non-existent application: " + recApp); in.ignore (); std::string recPort = IOUtils::read (in); in.ignore (); diff --git a/src/music/connectivity.hh b/src/music/connectivity.hh index 11a78c3..5238dbc 100644 --- a/src/music/connectivity.hh +++ b/src/music/connectivity.hh @@ -23,6 +23,7 @@ #include namespace MUSIC { + class ApplicationMap; /* * Communication Type () * Processing Method () @@ -229,7 +230,7 @@ namespace MUSIC { void write (std::ostringstream& out); - void read (std::istringstream& in, std::map leaders); + void read (std::istringstream& in, std::map leaders, ApplicationMap* applications); }; } diff --git a/utils/contsink.cc b/utils/contsink.cc index ab916aa..7eb4228 100644 --- a/utils/contsink.cc +++ b/utils/contsink.cc @@ -117,7 +117,8 @@ main (int argc, char* argv[]) contdata->map (&dmap, delay, interpolate); double stoptime; - setup->config ("stoptime", &stoptime); + if (!setup->config ("stoptime", &stoptime)) + stoptime = 1.0; MUSIC::Runtime* runtime = new MUSIC::Runtime (setup, timestep);