ScenarioCli.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarXCore::core
19  * @author Cedric Seehausen (usdnr at kit dot edu)
20  * @date 2016
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
24 
25 
26 #include "ScenarioCli.h"
27 
28 #include "ScenarioCliOptions.h"
30 
41 #include <iostream>
42 #include <filesystem>
43 
44 namespace armarx
45 {
47  {
48 
49  }
50 
52  Ice::PropertiesPtr properties)
53  {
54  //this->registry = registry;
55  }
56 
57  int ScenarioCli::exec(const ArmarXManagerPtr& armarXManager)
58  {
59  if (options.applicationName.empty())
60  {
61  startScenario(options.command, localScen, options.print, armarXManager->getIceManager()->getIceGridSession()->getAdmin(), options.parameters);
62  }
63  else
64  {
65  ApplicationInstancePtr app = localScen->getApplicationByName(options.applicationName);
66  if (app.get() != nullptr)
67  {
68  startApplication(options.command, app, options.print, armarXManager->getIceManager()->getIceGridSession()->getAdmin(), options.parameters);
69  }
70  else
71  {
72  options.error = true;
73  optionsManager.showHelp(options, "Could not find application '" + options.applicationName + "' in scenario '" + localScen->getName() + "'");
74  return 0;
75  }
76  }
77 
78  if (!options.print)
79  {
80  std::cout << "Finished" << std::endl;
81  }
82 
83  if (!options.wait || options.print)
84  {
85  armarXManager->shutdown();
86  }
87 
88  armarXManager->waitForShutdown();
89  return 0;
90  }
91 
92  int ScenarioCli::run(int argc, char* argv[])
93  {
94  using namespace ScenarioManager;
95  using namespace Parser;
96  using namespace Data_Structure;
97  try
98  {
99  setIceProperties(IceProperties::create(ApplicationOptions::mergeProperties(communicator()->getProperties()->clone(), argc, argv)));
100  }
101  catch (...)
102  {
103  std::cout << "Failed to parse arguments. exiting";
104  return -1;
105  }
106  ScenarioManagerCliOptions optionsManager;
107  options = optionsManager.parseCmdOptions(argc, argv);
108 
109 
110  if (!options.parameters.empty())
111  {
112  std::cout << "Additional command line parameters are: " << options.parameters << std::endl;
113  }
114 
115  //Handle help | error of parsing
116  if (options.showHelp || options.error)
117  {
118  if (options.error)
119  {
120  optionsManager.showHelp(options, "Could not parse input parameters");
121  return 0;
122  }
123  optionsManager.showHelp(options);
124  return 0;
125  }
126 
127  //capture edge cases
128  if (options.print && options.command != "start")
129  {
130  optionsManager.showHelp(options, "Print is only a valid option for the start command");
131  return 0;
132  }
133  else if (options.wait && (options.command == "list" || options.command == "status"))
134  {
135  optionsManager.showHelp(options, "Wait is not valid for the list or status command");
136  return 0;
137  }
138  else if (options.remote && options.command != "deploy")
139  {
140  optionsManager.showHelp(options, "The remote options is only usable with the deploy command");
141  return 0;
142  }
143 
144  PackageBuilder builder;
145 
146  //Handle list
147  if (options.command.compare("list") == 0)
148  {
149  std::cout << "Listing all Scenarios out of default Packages" << std::endl;
150  for (auto package : getArmarXPackageNames())
151  {
152  std::cout << "Scenarios in " << package << ":" << std::endl;
153  PackagePtr currentPackage = builder.parsePackage(package);
154  if (currentPackage.get() == nullptr)
155  {
156  std::cout << "Package " << package << " is listed in default packages, but could not be found" << std::endl << std::endl << std::endl;
157  continue;
158  }
159  for (auto scenario : * (currentPackage->getScenarios()))
160  {
161  std::cout << scenario->getName() << std::endl;
162  }
163  std::cout << std::endl << std::endl;
164  }
165  return 0;
166  }
167 
168  std::string packageName = options.packageName;
169  std::string scenarioName = ScenarioManagerCliOptions::GetScenarioNameByCommandLineInput(options);
170 
171  if (options.packageName.empty())
172  {
173  if (std::filesystem::is_regular_file(std::filesystem::path(options.scxPath))
174  || std::filesystem::is_directory(std::filesystem::path(options.scxPath)))
175  {
176  XMLScenarioParser parser;
177  std::string filePackageName;
178  if (std::filesystem::is_regular_file(std::filesystem::path(options.scxPath)))
179  {
180  filePackageName = parser.getPackageNameFromScx(options.scxPath);
181  }
182  else
183  {
184  filePackageName = parser.getPackageNameFromScx((std::filesystem::path(options.scxPath) / std::filesystem::path(scenarioName + ".scx")).string());
185  }
186 
187  if (filePackageName != "")
188  {
189  packageName = filePackageName;
190  }
191  else
192  {
193  packageName = packageChoosingDialog(scenarioName);
194  if (packageName.empty())
195  {
196  options.error = true;
197  optionsManager.showHelp(options, "Could not find any package for " + options.scxPath + ". Please add a PackageName or Add the PackageName to your default config.");
198  return 0;
199  }
200  }
201  }
202  else
203  {
204  packageName = packageChoosingDialog(scenarioName);
205  if (packageName.empty())
206  {
207  options.error = true;
208  optionsManager.showHelp(options, "Could not find any package for " + options.scxPath + ". Please add a PackageName or Add the PackageName to your default config.");
209  return 0;
210  }
211  }
212  }
213 
214 
215  if (scenarioName.empty())
216  {
217  options.error = true;
218  optionsManager.showHelp(options, "Could not find Scenario " + options.scxPath + " in Package " + packageName);
219  return 0;
220  }
221 
222  PackagePtr package;
223  ScenarioPtr scenario;
224 
225  CMakePackageFinder finder(packageName);
226  if (!finder.packageFound())
227  {
228  options.error = true;
229  optionsManager.showHelp(options, "CMakePackageFinder could not find package '" + packageName + "'");
230  return 0;
231  }
232 
233  XMLScenarioParser parser;
234  std::vector<std::string> scenarios = parser.getScenariosFromFolder(finder.getScenariosDir());
235 
236  for (auto scen : scenarios)
237  {
238  auto sFolderPos = scen.rfind("/");
239  if ((sFolderPos == std::string::npos && scen == scenarioName)
240  || (sFolderPos != std::string::npos && scen.substr(sFolderPos + 1) == scenarioName))
241  {
242  package = builder.parsePackage(packageName, StringList {scen + "::Package::" + packageName});
243  break;
244  }
245  }
246 
247  if (package.get() == nullptr)
248  {
249  optionsManager.showHelp(options, "Failed to parse package " + packageName);
250  return 0;
251  }
252 
253  scenario = package->getScenarioByName(scenarioName);
254 
255  if (scenario.get() == nullptr)
256  {
257  options.error = true;
258  optionsManager.showHelp(options, "Could not find Scenario " + scenarioName + " in Package " + package->getName());
259  return 0;
260  }
261 
262  if (options.command == "generate")
263  {
265  generator.generateLocalApplication(scenario);
266  generator.generateRemoteApplication(scenario);
267 
268  return 0;
269  }
270 
271  localScen = scenario;
272 
273  const char* n_argv[] = {argv[0], "--ArmarX.RedirectStdout=false"};
274  return armarx::Application::run(2, const_cast<char**>(n_argv));
275  }
276 
277  std::string ScenarioCli::packageChoosingDialog(std::string scenarioName)
278  {
279  using namespace ScenarioManager;
280  using namespace Parser;
281  using namespace Data_Structure;
282  using namespace Exec;
283  StringList packages = PackageBuilder::FilterPackagesForScenario(scenarioName);
284 
285  if (packages.size() == 0)
286  {
287  return "";
288  }
289  else if (packages.size() == 1)
290  {
291  return packages[0];
292  }
293  else if (packages.size() > 1)
294  {
295  size_t answer = -1;
296  while (answer > packages.size())
297  {
298  std::cout << "Found multiple possible packages for this Scenario path, please select: " << std::endl;
299  int number = 1;
300  for (auto package : packages)
301  {
302  std::cout << number << ") " << package << std::endl;
303  number++;
304  }
305  std::cout << "Please enter a number now: " << std::endl;
306 
307  std::string answerString;
308  std::cin >> answerString;
309  try
310  {
311  answer = boost::lexical_cast<size_t>(answerString);
312  }
313  catch (...)
314  {
315  std::cout << "ERROR: Could not convert input to a number - please type in a number between 1 and " << packages.size() << std::endl << std::endl;
316  continue;
317  }
318 
319  if (answer > packages.size() || answer == 0)
320  {
321  answer = -1;
322  continue;
323  }
324  answer -= 1;
325  }
326  return packages[answer];
327  }
328 
329  return "";
330  }
331 
332  bool ScenarioCli::deployDialog()
333  {
334  std::cout << "Last time this Scenario was deployed via Ice, but it is not deployed right now" << std::endl;
335  std::cout << "If you want to start this scenario via ice please enter 1" << std::endl;
336  std::cout << "If you want to start this scenario locally please enter 2" << std::endl;
337  std::cout << "Your answer: ";
338 
339  size_t answer = -1;
340  while (answer > 2)
341  {
342  std::string answerString;
343  std::cin >> answerString;
344  try
345  {
346  answer = boost::lexical_cast<size_t>(answerString);
347  }
348  catch (...)
349  {
350  std::cout << "ERROR: Could not convert input to a number - please type either 1 or 2" << std::endl << std::endl;
351  continue;
352  }
353  }
354  if (answer == 1)
355  {
356  return true;
357  }
358  else
359  {
360  return false;
361  }
362  }
363 
364  void ScenarioCli::startScenario(std::string command, ScenarioManager::Data_Structure::ScenarioPtr scenario, bool printOnly, IceGrid::AdminPrx iceAdmin, const std::string& commandLineParameters)
365  {
366  using namespace ScenarioManager;
367  using namespace Exec;
368  StopStrategyFactory stopStrategyFactory;
369  Executor executor(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getPidStopper()), StarterFactory::getFactory()->getStarter());
370 
371  std::future<void> result;
372 
373  StatusManager manager;
374  bool iceApp = false;
375  if (manager.isIceScenario(scenario))
376  {
377  executor.setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario);
378  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), scenario);
379  iceApp = true;
380  }
381 
382  //look if the app is startet or not and look for pids
383  for (auto app : *scenario->getApplications())
384  {
385  app->setStatus(executor.getApplicationStatus(app));
386  }
387 
388 
389  if (command == "status")
390  {
391  std::cout << "Status of " << scenario->getName() << " is: ";
392 
394  {
396  }
397  else if (scenario->getStatus() == ScenarioManager::Data_Structure::ApplicationStatus::Inactive)
398  {
400  }
401  else if (scenario->getStatus() == ScenarioManager::Data_Structure::ApplicationStatus::Running)
402  {
404  }
405  else if (scenario->getStatus() == ScenarioManager::Data_Structure::ApplicationStatus::Mixed)
406  {
408  }
409  else
410  {
412  }
413 
414  if (executor.isScenarioDeployed(scenario))
415  {
416  std::cout << " (Deployed via Ice)";
417  }
418  else
419  {
420  std::cout << " (Running locally)";
421  }
422  std::cout << std::endl;
423  bool scenarioDeployed = executor.isScenarioDeployed(scenario);
424  for (auto app : *scenario->getApplications())
425  {
426  std::cout << "\t " << app->getName() << " : ";
428  {
430  }
432  {
434  }
436  {
438  }
439  else
440  {
442  }
443 
444  if (scenarioDeployed)
445  {
446  if (executor.isApplicationDeployed(app))
447  {
448  std::cout << " (Deployed)";
449  }
450  else
451  {
452  std::cout << " (Not Deployed)";
453  }
454  }
455  std::cout << std::endl;
456  }
457  return;
458  }
459  else if (command == "periodic_status")
460  {
461  while (true)
462  {
463  std::cout << "Status of " << scenario->getName() << " is: ";
464 
465  if (scenario->getStatus() == "Running")
466  {
467  coloredStdOut("Running", 92);
468  }
469  else if (scenario->getStatus() == "Stopped")
470  {
471  coloredStdOut("Stopped", 31);
472  }
473  else if (scenario->getStatus() == "Mixed")
474  {
475  coloredStdOut("Mixed", 93);
476  }
477  std::cout << std::endl;
478  for (auto app : *scenario->getApplications())
479  {
480  app->setStatus(executor.getApplicationStatus(app));
481  }
482  TimeUtil::SleepMS(1000);
483  }
484  }
485  else if (command == "start")
486  {
487  if (!printOnly)
488  {
489  std::cout << "Starting Scenario ";
490  }
491  if (iceApp && !executor.isScenarioDeployed(scenario))
492  {
493  if (deployDialog())
494  {
495  executor.setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario);
496  std::future<void> waiter = executor.deployScenario(scenario, printOnly, commandLineParameters);
497  waiter.wait();
498  }
499  else
500  {
501  manager.setIceScenario(scenario, false);
502  executor.setStarter(StarterFactory::getFactory()->getStarter(), scenario);
503  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getPidStopper()), scenario);
504  }
505  }
506  result = executor.startScenario(scenario, printOnly, commandLineParameters);
507  }
508  else if (command == "deploy")
509  {
510  std::cout << "Deploying Scenario ";
511  if (!iceApp && scenario->getStatus() != Data_Structure::ApplicationStatus::Stopped)
512  {
513  optionsManager.showHelp(options, "You cannot deploy an Scenario which is already running locally. Please stop it first");
514  return;
515  }
516  executor.setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), scenario);
517  if (options.remote)
518  {
519  scenario->setScenarioDeploymentType(Data_Structure::ScenarioDeploymentType::Remote);
520  }
521  else
522  {
523  scenario->setScenarioDeploymentType(Data_Structure::ScenarioDeploymentType::Local);
524  }
525  result = executor.deployScenario(scenario, printOnly, commandLineParameters);
526  }
527  else if (command == "stop")
528  {
529  std::cout << "Stopping Scenario ";
530  result = executor.stopScenario(scenario);
531  }
532  else if (command == "kill")
533  {
534  std::cout << "Killing Scenario ";
535  if (!iceApp)
536  {
537  executor.setStopStrategy(stopStrategyFactory.getStopAndKillStrategy(StopperFactory::getFactory()->getPidStopper(), 500), scenario);
538  }
539  result = executor.stopScenario(scenario);
540  }
541  else if (command == "remove")
542  {
543  std::cout << "Removing Scenario ";
544  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), scenario);
545  result = executor.removeScenario(scenario);
546  }
547  else if (command == "restart")
548  {
549  ARMARX_INFO << "Restarting Scenario";
550  if (!iceApp)
551  {
552  executor.setStopStrategy(stopStrategyFactory.getStopAndKillStrategy(StopperFactory::getFactory()->getPidStopper(), 500), scenario);
553  }
554  result = executor.restartScenario(scenario, printOnly);
555  }
556 
557  if (!printOnly)
558  {
559  std::cout << scenario->getName() << std::endl;
560  }
561 
562  result.wait();
563  }
564 
565  void ScenarioCli::startApplication(std::string command, ScenarioManager::Data_Structure::ApplicationInstancePtr app, bool printOnly, IceGrid::AdminPrx iceAdmin, const std::string& commandLineParameters)
566  {
567  using namespace ScenarioManager;
568  using namespace Exec;
569  StopStrategyFactory stopStrategyFactory;
570  Executor executor(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getPidStopper()), StarterFactory::getFactory()->getStarter());
571 
572  std::future<void> result;
573 
574  StatusManager manager;
575  bool iceApp = false;
576  if (manager.isIceScenario(app->getScenario()))
577  {
578  executor.setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), app->getScenario());
579  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), app->getScenario());
580  iceApp = true;
581  }
582 
583  //look for app pid
584  app->setStatus(executor.getApplicationStatus(app));
585 
586  if (command == "status")
587  {
588  std::cout << "Status of " << app->getName() << "is: ";
590  {
592  }
594  {
596  }
598  {
600  }
601  else
602  {
604  }
605  if (executor.isApplicationDeployed(app))
606  {
607  std::cout << " (Deployed via Ice)";
608  }
609  else
610  {
611  std::cout << " (Running locally)";
612  }
613  std::cout << std::endl;
614  return;
615  }
616  else if (command == "start")
617  {
618  if (!printOnly)
619  {
620  std::cout << "Starting Application ";
621  }
622  if (iceApp && !executor.isApplicationDeployed(app))
623  {
624  if (deployDialog())
625  {
626  executor.deployApplication(app, printOnly, commandLineParameters);
627  }
628  else
629  {
630  manager.setIceScenario(app->getScenario(), false);
631  executor.setStarter(StarterFactory::getFactory()->getStarter(), app->getScenario());
632  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getPidStopper()), app->getScenario());
633  }
634  }
635 
636  result = executor.startApplication(app, printOnly, commandLineParameters);
637  }
638  else if (command == "deploy")
639  {
640  std::cout << "Deploying Application ";
641  if (!iceApp && app->getStatus() != Data_Structure::ApplicationStatus::Stopped)
642  {
643  optionsManager.showHelp(options, "You cannot deploy an Scenario which is already running locally. Please stop it first");
644  return;
645  }
646  executor.setStarter(StarterFactory::getFactory()->getIceStarter(iceAdmin), app->getScenario());
647  result = executor.deployApplication(app, printOnly, commandLineParameters);
648  }
649  else if (command == "stop")
650  {
651  std::cout << "Stopping Application ";
652  result = executor.stopApplication(app);
653  }
654  else if (command == "kill")
655  {
656  std::cout << "Killing Application ";
657  if (!iceApp)
658  {
659  executor.setStopStrategy(stopStrategyFactory.getStopAndKillStrategy(StopperFactory::getFactory()->getByNameStopper(), 0), app->getScenario());
660  }
661  result = executor.stopApplication(app);
662  }
663  else if (command == "remove")
664  {
665  std::cout << "Removing Application ";
666  executor.setStopStrategy(stopStrategyFactory.getStopStrategy(StopperFactory::getFactory()->getIceStopper(iceAdmin)), app->getScenario());
667  result = executor.removeApplication(app);
668  }
669  else if (command == "restart")
670  {
671  std::cout << "Restarting Application ";
672  if (!iceApp)
673  {
674  executor.setStopStrategy(stopStrategyFactory.getStopAndKillStrategy(StopperFactory::getFactory()->getByNameStopper(), 0), app->getScenario());
675  }
676  result = executor.restartApplication(app, printOnly);
677  }
678 
679  if (!printOnly)
680  {
681  std::cout << app->getName() << std::endl;
682  }
683  result.wait();
684  }
685 
686  void ScenarioCli::coloredStdOut(std::string message, int colorCode)
687  {
688  std::cout << "\033[" << colorCode << "m" << message << "\033[0m";
689  }
690 }
armarx::CmdOptions::command
std::string command
Definition: ScenarioCliOptions.h:41
armarx::Application::run
int run(int argc, char *argv[]) override
Ice::Application replacement for the main function.
Definition: Application.cpp:363
armarx::ScenarioManagerCliOptions::showHelp
void showHelp(CmdOptions options, std::string errorMessage="")
Definition: ScenarioCliOptions.cpp:148
ScenarioManager::Data_Structure::ApplicationInstancePtr
std::shared_ptr< ApplicationInstance > ApplicationInstancePtr
Definition: ApplicationInstance.h:33
ScenarioManager::Data_Structure::ScenarioPtr
std::shared_ptr< Scenario > ScenarioPtr
Definition: Scenario.h:36
armarx::ApplicationOptions::mergeProperties
Ice::PropertiesPtr mergeProperties(Ice::PropertiesPtr properties, int argc, char *argv[])
Merge command line options into properties.
Definition: ApplicationOptions.cpp:59
ScenarioManager::Generator::IceGridXmlGenerator::generateLocalApplication
void generateLocalApplication(Data_Structure::ScenarioPtr scenario)
Definition: IceGridXmlGenerator.cpp:45
armarx::ScenarioManagerCliOptions::GetScenarioNameByCommandLineInput
static std::string GetScenarioNameByCommandLineInput(CmdOptions string)
Definition: ScenarioCliOptions.cpp:158
StopperFactory.h
ScenarioManager::Data_Structure::ApplicationStatus::Stopped
static const std::string Stopped
Definition: ApplicationInstance.h:47
armarx::ScenarioCli::exec
int exec(const ArmarXManagerPtr &armarXManager) override
Exec method is the main process of the application.
Definition: ScenarioCli.cpp:57
message
message(STATUS "Boost-Library-Dir: " "${Boost_LIBRARY_DIRS}") message(STATUS "Boost-LIBRARIES
Definition: CMakeLists.txt:8
ScenarioManager::Generator::IceGridXmlGenerator::generateRemoteApplication
void generateRemoteApplication(Data_Structure::ScenarioPtr scenario)
Definition: IceGridXmlGenerator.cpp:114
ScenarioManager::Data_Structure::ApplicationStatus::Running
static const std::string Running
Definition: ApplicationInstance.h:48
ApplicationInstancePtr
std::shared_ptr< ScenarioManager::Data_Structure::ApplicationInstance > ApplicationInstancePtr
Definition: StopStrategy.h:7
ApplicationOptions.h
armarx::CmdOptions::print
bool print
Definition: ScenarioCliOptions.h:37
IceInternal::Handle< ::Ice::Properties >
armarx::CmdOptions::parameters
std::string parameters
Definition: ScenarioCliOptions.h:44
PackageBuilder.h
armarx::ScenarioCli::ScenarioCli
ScenarioCli()
Definition: ScenarioCli.cpp:46
ScenarioManager::Data_Structure::PackagePtr
std::shared_ptr< Package > PackagePtr
Definition: Package.h:121
ScenarioCliOptions.h
armarx::IceProperties::create
static Ice::PropertiesPtr create(const Ice::PropertiesPtr &iceProperties=nullptr)
Definition: IceProperties.cpp:32
ScenarioManager::Data_Structure::ApplicationStatus::Inactive
static const std::string Inactive
Definition: ApplicationInstance.h:52
XMLScenarioParser.h
ScenarioManager::StatusManager::isIceScenario
bool isIceScenario(Data_Structure::ScenarioPtr scenario)
Definition: StatusManager.cpp:85
IceGridAdmin.h
ScenarioManager::Data_Structure::ApplicationStatus::Mixed
static const std::string Mixed
Definition: ApplicationInstance.h:50
ScenarioManager::Data_Structure::ApplicationStatus::Unknown
static const std::string Unknown
Definition: ApplicationInstance.h:51
ScenarioManager::StatusManager
Definition: StatusManager.h:7
ScenarioManager::Data_Structure::Local
@ Local
Definition: Scenario.h:53
IceGridXmlGenerator.h
armarx::CmdOptions::error
bool error
Definition: ScenarioCliOptions.h:36
armarx::CmdOptions::wait
bool wait
Definition: ScenarioCliOptions.h:38
armarx::CmdOptions::applicationName
std::string applicationName
Definition: ScenarioCliOptions.h:43
IceStorm::parser
Parser * parser
Definition: Parser.cpp:33
armarx::Application::setIceProperties
void setIceProperties(Ice::PropertiesPtr properties) override
Overrides PropertyUser::setIceProperties() which is called internally.
Definition: Application.cpp:306
armarx::TimeUtil::SleepMS
static void SleepMS(float milliseconds)
Definition: TimeUtil.h:195
TimeUtil.h
ScenarioManager
Definition: Application.cpp:166
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
ScenarioManager::Data_Structure::Remote
@ Remote
Definition: Scenario.h:54
StopStrategyFactory.h
IceUtil::Handle< ManagedIceObjectRegistryInterface >
armarx::Application::getArmarXPackageNames
std::vector< std::string > getArmarXPackageNames()
getDefaultPackageNames returns the value of the ArmarX.DefaultPackages property It splits the string ...
Definition: Application.cpp:668
ScenarioManager::Generator::IceGridXmlGenerator
Definition: IceGridXmlGenerator.h:37
IceStorm::Parser::error
void error(const char *)
Logging.h
ScenarioCli.h
armarx::ScenarioCli::setup
void setup(const ManagedIceObjectRegistryInterfacePtr &registry, Ice::PropertiesPtr properties) override
Setup method to be implemented by user applications.
Definition: ScenarioCli.cpp:51
ScenarioManager::StatusManager::setIceScenario
void setIceScenario(Data_Structure::ScenarioPtr scenario, bool state)
Definition: StatusManager.cpp:97
ArmarXDataPath.h
StarterFactory.h
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
ScenarioManager::Parser::StringList
std::vector< std::string > StringList
Definition: PackageBuilder.h:34