From 3deb0147b89cde46c9ec8dd79c78ecb8ec267d4d Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 24 Feb 2012 07:05:24 +0000 Subject: [PATCH] hostName -> remoteLogin --- Common/Context.h | 2 +- Common/DefaultOptions.h | 22 +++++++++++----------- Common/OS.cpp | 2 +- Common/Options.cpp | 26 +++++++++++++------------- Common/Options.h | 12 ++++++------ Common/onelab.h | 21 +++++++++++++-------- Fltk/menuWindow.cpp | 4 ++-- Fltk/onelabWindow.cpp | 30 +++++++++++++++++++----------- Fltk/onelabWindow.h | 4 ++-- 9 files changed, 68 insertions(+), 55 deletions(-) diff --git a/Common/Context.h b/Common/Context.h index d10cd9be11..0bc5f13fd6 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -217,7 +217,7 @@ class CTX { int plugins, listen; double timeout; std::string socketName; - std::string name[5], executable[5], hostname[5]; + std::string name[5], executable[5], remoteLogin[5]; }solver; // print options struct{ diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 0794ef8396..84a60032de 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -125,17 +125,6 @@ StringXString SolverOptions_String[] = { { F|S, "Executable4" , opt_solver_executable4 , "" , "System command to launch solver 4" }, - { F|S, "Hostname0" , opt_solver_hostname0 , "", - "Hostname where to launch solver 0" }, - { F|S, "Hostname1" , opt_solver_hostname1 , "" , - "Hostname where to launch solver 1" }, - { F|S, "Hostname2" , opt_solver_hostname2 , "" , - "Hostname where to launch solver 2" }, - { F|S, "Hostname3" , opt_solver_hostname3 , "" , - "Hostname where to launch solver 3" }, - { F|S, "Hostname4" , opt_solver_hostname4 , "" , - "Hostname where to launch solver 4" }, - { F|S, "Name0" , opt_solver_name0 , "GetDP" , "Name of solver 0" }, { F|S, "Name1" , opt_solver_name1 , "" , @@ -147,6 +136,17 @@ StringXString SolverOptions_String[] = { { F|S, "Name4" , opt_solver_name4 , "" , "Name of solver 4" }, + { F|S, "RemoteLogin0" , opt_solver_remote_login0 , "", + "Command to login to a remote host to launch solver 0" }, + { F|S, "RemoteLogin1" , opt_solver_remote_login1 , "" , + "Command to login to a remote host to launch solver 1" }, + { F|S, "RemoteLogin2" , opt_solver_remote_login2 , "" , + "Command to login to a remote host to launch solver 2" }, + { F|S, "RemoteLogin3" , opt_solver_remote_login3 , "" , + "Command to login to a remote host to launch solver 3" }, + { F|S, "RemoteLogin4" , opt_solver_remote_login4 , "" , + "Command to login to a remote host to launch solver 4" }, + { F|O, "SocketName" , opt_solver_socket_name , #if defined(WIN32) && !defined(__CYGWIN__) "127.0.0.1:4412" , // use TCP/IP sockets by default on Windows diff --git a/Common/OS.cpp b/Common/OS.cpp index 5e45252c7a..f7f764dcf1 100644 --- a/Common/OS.cpp +++ b/Common/OS.cpp @@ -209,7 +209,7 @@ int SystemCall(const std::string &command, bool blocking) } std::string cmd(command); if(!blocking) cmd += " &"; - Msg::Info("Calling <%s>", cmd.c_str()); + Msg::Info("Calling '%s'", cmd.c_str()); return system(cmd.c_str()); #endif } diff --git a/Common/Options.cpp b/Common/Options.cpp index 0fb008815f..58a8931307 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1184,36 +1184,36 @@ std::string opt_solver_executable4(OPT_ARGS_STR) return opt_solver_executable(4, action, val); } -std::string opt_solver_hostname(OPT_ARGS_STR) +std::string opt_solver_remote_login(OPT_ARGS_STR) { if(action & GMSH_SET) - CTX::instance()->solver.hostname[num] = val; - return CTX::instance()->solver.hostname[num]; + CTX::instance()->solver.remoteLogin[num] = val; + return CTX::instance()->solver.remoteLogin[num]; } -std::string opt_solver_hostname0(OPT_ARGS_STR) +std::string opt_solver_remote_login0(OPT_ARGS_STR) { - return opt_solver_hostname(0, action, val); + return opt_solver_remote_login(0, action, val); } -std::string opt_solver_hostname1(OPT_ARGS_STR) +std::string opt_solver_remote_login1(OPT_ARGS_STR) { - return opt_solver_hostname(1, action, val); + return opt_solver_remote_login(1, action, val); } -std::string opt_solver_hostname2(OPT_ARGS_STR) +std::string opt_solver_remote_login2(OPT_ARGS_STR) { - return opt_solver_hostname(2, action, val); + return opt_solver_remote_login(2, action, val); } -std::string opt_solver_hostname3(OPT_ARGS_STR) +std::string opt_solver_remote_login3(OPT_ARGS_STR) { - return opt_solver_hostname(3, action, val); + return opt_solver_remote_login(3, action, val); } -std::string opt_solver_hostname4(OPT_ARGS_STR) +std::string opt_solver_remote_login4(OPT_ARGS_STR) { - return opt_solver_hostname(4, action, val); + return opt_solver_remote_login(4, action, val); } #if defined(HAVE_FLTK) diff --git a/Common/Options.h b/Common/Options.h index f75824de3a..3a483bd6c6 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -63,12 +63,12 @@ std::string opt_solver_executable1(OPT_ARGS_STR); std::string opt_solver_executable2(OPT_ARGS_STR); std::string opt_solver_executable3(OPT_ARGS_STR); std::string opt_solver_executable4(OPT_ARGS_STR); -std::string opt_solver_hostname(OPT_ARGS_STR); -std::string opt_solver_hostname0(OPT_ARGS_STR); -std::string opt_solver_hostname1(OPT_ARGS_STR); -std::string opt_solver_hostname2(OPT_ARGS_STR); -std::string opt_solver_hostname3(OPT_ARGS_STR); -std::string opt_solver_hostname4(OPT_ARGS_STR); +std::string opt_solver_remote_login(OPT_ARGS_STR); +std::string opt_solver_remote_login0(OPT_ARGS_STR); +std::string opt_solver_remote_login1(OPT_ARGS_STR); +std::string opt_solver_remote_login2(OPT_ARGS_STR); +std::string opt_solver_remote_login3(OPT_ARGS_STR); +std::string opt_solver_remote_login4(OPT_ARGS_STR); std::string opt_view_name(OPT_ARGS_STR); std::string opt_view_format(OPT_ARGS_STR); std::string opt_view_filename(OPT_ARGS_STR); diff --git a/Common/onelab.h b/Common/onelab.h index 4c30d8cdc7..c26b8e62e9 100644 --- a/Common/onelab.h +++ b/Common/onelab.h @@ -700,22 +700,27 @@ namespace onelab{ class localNetworkClient : public localClient{ private: - // command line to launch the remote network client - std::string _commandLine; + // executable of the client (including filesystem path, if necessary) + std::string _executable; + // command to login to a remote host (if necessary) + std::string _remoteLogin; // command line option to specify socket std::string _socketSwitch; - // pid of the remote network client + // pid of the remote network client while it is running (-1 otherwise) int _pid; // underlying GmshServer GmshServer *_gmshServer; public: - localNetworkClient(const std::string &name, const std::string &commandLine) - : localClient(name), _commandLine(commandLine), _socketSwitch("-onelab"), - _pid(-1), _gmshServer(0) {} + localNetworkClient(const std::string &name, const std::string &executable, + const std::string &remoteLogin="") + : localClient(name), _executable(executable), _remoteLogin(remoteLogin), + _socketSwitch("-onelab"), _pid(-1), _gmshServer(0) {} virtual ~localNetworkClient(){} virtual bool isNetworkClient(){ return true; } - const std::string &getCommandLine(){ return _commandLine; } - void setCommandLine(const std::string &s){ _commandLine = s; } + const std::string &getExecutable(){ return _executable; } + void setExecutable(const std::string &s){ _executable = s; } + const std::string &getRemoteLogin(){ return _remoteLogin; } + void setRemoteLogin(const std::string &s){ _remoteLogin = s; } const std::string &getSocketSwitch(){ return _socketSwitch; } void setSocketSwitch(const std::string &s){ _socketSwitch = s; } int getPid(){ return _pid; } diff --git a/Fltk/menuWindow.cpp b/Fltk/menuWindow.cpp index aa9bde9abe..44a6238a0e 100644 --- a/Fltk/menuWindow.cpp +++ b/Fltk/menuWindow.cpp @@ -196,8 +196,8 @@ static void file_remote_cb(Fl_Widget *w, void *data) Msg::Error("Cannot start: remote Gmsh is already running"); return; } - c->setCommandLine(connectionChooser()); - if(c->getCommandLine().size()) c->run(); + c->setExecutable(connectionChooser()); + if(c->getExecutable().size()) c->run(); } else{ if(!server){ diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp index da5b2f7fc9..c86def1e17 100644 --- a/Fltk/onelabWindow.cpp +++ b/Fltk/onelabWindow.cpp @@ -54,7 +54,7 @@ class onelabGmshServer : public GmshServer{ while(1){ if(timeout > 0 && GetTimeInSeconds() - start > timeout) return 2; // timout - if(_client->getPid() < 0 || (_client->getCommandLine().empty() && + if(_client->getPid() < 0 || (_client->getExecutable().empty() && !CTX::instance()->solver.listen)) return 1; // process has been killed or we stopped listening // check if there is data (call select with a zero timeout to @@ -188,7 +188,7 @@ bool onelab::localNetworkClient::run() sockname = tmp.str(); } - std::string command = FixWindowsPath(_commandLine); + std::string command = FixWindowsPath(_executable); if(command.size()){ // complete the command line if "UseCommandLine" is set in the database std::vector<onelab::number> n; @@ -716,6 +716,7 @@ void onelab_cb(Fl_Widget *w, void *data) start = i + 1; } } + FlGui::instance()->showMessages(); return; } @@ -872,11 +873,11 @@ static void onelab_choose_executable_cb(Fl_Widget *w, void *data) pattern += ".exe"; #endif const char *old = 0; - if(!c->getCommandLine().empty()) old = c->getCommandLine().c_str(); + if(!c->getExecutable().empty()) old = c->getExecutable().c_str(); if(fileChooser(FILE_CHOOSER_SINGLE, "Choose executable", pattern.c_str(), old)){ std::string exe = fileChooserGetName(1); - c->setCommandLine(exe); + c->setExecutable(exe); if(c->getIndex() >= 0 && c->getIndex() < 5) opt_solver_executable(c->getIndex(), GMSH_SET, exe); } @@ -894,7 +895,7 @@ static void onelab_add_solver_cb(Fl_Widget *w, void *data) if(opt_solver_name(i, GMSH_GET, "").empty()){ const char *name = fl_input("Client name:", ""); if(name){ - FlGui::instance()->onelab->addSolver(name, "", i); + FlGui::instance()->onelab->addSolver(name, "", "", i); } return; } @@ -1155,11 +1156,12 @@ void onelabWindow::rebuildSolverList() _win->label(_title.c_str()); // update Gmsh solver menu - std::vector<std::string> names, exes; + std::vector<std::string> names, exes, hosts; for(int i = 0; i < 5; i++){ if(opt_solver_name(i, GMSH_GET, "").size()){ names.push_back(opt_solver_name(i, GMSH_GET, "")); exes.push_back(opt_solver_executable(i, GMSH_GET, "")); + hosts.push_back(opt_solver_remote_login(i, GMSH_GET, "")); } } for(int i = 0; i < 5; i++){ @@ -1169,17 +1171,19 @@ void onelabWindow::rebuildSolverList() it->second->setIndex(i); opt_solver_name(i, GMSH_SET, names[i]); opt_solver_executable(i, GMSH_SET, exes[i]); + opt_solver_remote_login(i, GMSH_SET, hosts[i]); } else{ opt_solver_name(i, GMSH_SET, ""); opt_solver_executable(i, GMSH_SET, ""); + opt_solver_remote_login(i, GMSH_SET, ""); } } FlGui::instance()->menu->setContext(menu_solver, 0); } -void onelabWindow::addSolver(const std::string &name, const std::string &commandLine, - int index) +void onelabWindow::addSolver(const std::string &name, const std::string &executable, + const std::string &remoteLogin, int index) { if(onelab::server::instance()->findClient(name) != onelab::server::instance()->lastClient()) return; // solver already exists @@ -1196,11 +1200,13 @@ void onelabWindow::addSolver(const std::string &name, const std::string &command } // create and register the new client - onelab::localNetworkClient *c = new onelab::localNetworkClient(name, commandLine); + onelab::localNetworkClient *c = new onelab::localNetworkClient(name, executable, + remoteLogin); c->setIndex(index); opt_solver_name(index, GMSH_SET, name); - if(commandLine.empty()) + if(executable.empty()) onelab_choose_executable_cb(0, (void *)c); + opt_solver_remote_login(index, GMSH_SET, remoteLogin); FlGui::instance()->onelab->rebuildSolverList(); @@ -1218,6 +1224,7 @@ void onelabWindow::removeSolver(const std::string &name) if(c->getIndex() >= 0 && c->getIndex() < 5){ opt_solver_name(c->getIndex(), GMSH_SET, ""); opt_solver_executable(c->getIndex(), GMSH_SET, ""); + opt_solver_remote_login(c->getIndex(), GMSH_SET, ""); } delete c; } @@ -1232,7 +1239,8 @@ void solver_cb(Fl_Widget *w, void *data) if(num >= 0){ std::string name = opt_solver_name(num, GMSH_GET, ""); std::string exe = opt_solver_executable(num, GMSH_GET, ""); - FlGui::instance()->onelab->addSolver(name, exe, num); + std::string host = opt_solver_remote_login(num, GMSH_GET, ""); + FlGui::instance()->onelab->addSolver(name, exe, host, num); } else FlGui::instance()->onelab->rebuildSolverList(); diff --git a/Fltk/onelabWindow.h b/Fltk/onelabWindow.h index 6499ed504a..4b4ab18659 100644 --- a/Fltk/onelabWindow.h +++ b/Fltk/onelabWindow.h @@ -48,8 +48,8 @@ class onelabWindow{ _tree->item_pathname(path, 1024, item); return std::string(path); } - void addSolver(const std::string &name, const std::string &commandLine, - int index); + void addSolver(const std::string &name, const std::string &exe, + const std::string &hostName, int index); void removeSolver(const std::string &name); void checkForErrors(const std::string &client); bool stop(){ return _stop; } -- GitLab