Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages | Examples

moduleExample.cpp

Example demonstrating how to load an ArModule

This is a simple program that loads the module moduleExample_Mod, which is defined in moduleExample_Mod.cpp. The program simply calls ArModuleLoader::load() with a short message argument and ArModuleLoader::reload with no argument and finally calls ArModuleLoader::close(). The return status of the load(), reload(), and close() are checked and printed out. ArModuleLoader uses the name of the module file without the platform-specific suffix (i.e. ".dll" on Windows and ".so" on Linux) to load the module.

See also:
moduleExample_Mod.cpp.

ArModuleLoader in the reference manual.

#include "Aria.h"


void printStatus(ArModuleLoader::Status status)
{
  if (status == ArModuleLoader::STATUS_ALREADY_LOADED)
    ArLog::log(ArLog::Terse, "moduleExample: Module already loaded.");
  else if (status == ArModuleLoader::STATUS_FAILED_OPEN)
    ArLog::log(ArLog::Terse, "moduleExample: Failed to find or open the simpleMod module.");
  else if (status == ArModuleLoader::STATUS_INVALID)
    ArLog::log(ArLog::Terse, "moduleExample: Invalid file.");
  else if (status == ArModuleLoader::STATUS_INIT_FAILED)
    ArLog::log(ArLog::Terse, "moduleExample: Module Init failed.");
  else if (status == ArModuleLoader::STATUS_SUCCESS)
    ArLog::log(ArLog::Terse, "moduleExample: Module succedded.");
  else if (status == ArModuleLoader::STATUS_EXIT_FAILED)
    ArLog::log(ArLog::Terse, "moduleExample: Module exit sequence failed.");
  else if (status == ArModuleLoader::STATUS_NOT_FOUND)
    ArLog::log(ArLog::Terse, "moduleExample: Module not found.");
  else
    ArLog::log(ArLog::Terse, "moduleExample: Module returned unknown status!");
  ArLog::log(ArLog::Terse, "");
}

int main(int argc, char **argv)
{

  Aria::init();

  ArArgumentParser parser(&argc, argv);
  // set up our simple connector
  ArSimpleConnector simpleConnector(&parser);  
  ArRobot robot;

  // set up the robot for connecting
  if (!simpleConnector.connectRobot(&robot))
  {
    printf("Could not connect to robot... exiting\n");
    Aria::exit(1);
  }

  robot.runAsync(true);

  ArModuleLoader::Status status;
  std::string str;

  ArLog::log(ArLog::Terse, "moduleExample: Loading the module \"moduleExample_Mod\" with a string argument...");
  status=ArModuleLoader::load("./moduleExample_Mod", &robot, (char *)"You've loaded a module!");
  printStatus(status);
  //ArLog::log(ArLog::Terse, "moduleExample: Reloading the module with no argument...");
  //status=ArModuleLoader::reload("./moduleExample_Mod", &robot);
  //printStatus(status);

  //ArLog::log(ArLog::Terse, "moduleExample: Closing the module...");
  //status=ArModuleLoader::close("./moduleExample_Mod");
  //printStatus(status);

  ArUtil::sleep(3000);

  Aria::shutdown();
  return(0);
}

Generated on Thu Jan 7 10:34:38 2010 for Aria by  doxygen 1.4.2