Ensures normalization on waitfe/fc-xml operations
[anna.git] / example / diameter / launcher / Launcher.hpp
index 2101948..399a0f8 100644 (file)
 // Process
 #include <MyCommunicator.hpp>
 #include <MyCounterRecorder.hpp>
-#include <TestManager.hpp>
-
-
-#define SH_COMMAND_TAG_FOR_REPLACE__CYCLE_ID    "##cycleid##"
-#define SH_COMMAND_TAG_FOR_REPLACE__TESTCASE_ID "##testcaseid##"
-#define SH_COMMAND_TAG_FOR_REPLACE__TESTSTEP_ID "##teststepid##"
+#include <anna/testing/TestManager.hpp>
 
 
 namespace anna {
@@ -39,26 +34,28 @@ namespace anna {
     namespace codec {
       class Engine;
     }
+    namespace comm {
+      class OriginHost;
+    }
   }
 }
 
 class TestManager;
-class RealmNode;
 class MyDiameterEntity;
 class MyLocalServer;
 class MyDiameterEngine;
 
-// RealmNode resources
-class RealmNode;
-typedef std::map<std::string, RealmNode*> realm_nodes_t;
-typedef std::map<std::string, RealmNode*>::const_iterator realm_nodes_it;
-typedef std::map<std::string, RealmNode*>::iterator realm_nodes_nc_it;
+// OriginHost resources
+typedef std::map<std::string, anna::diameter::comm::OriginHost*> origin_hosts_t;
+typedef std::map<std::string, anna::diameter::comm::OriginHost*>::const_iterator origin_hosts_it;
+typedef std::map<std::string, anna::diameter::comm::OriginHost*>::iterator origin_hosts_nc_it;
 
 
 class Launcher : public anna::comm::Application {
 
   // Start time:
   anna::time::Date a_start_time;
+  std::string a_initialWorkingDirectory;
 
   // Core engines:
   MyCommunicator *a_communicator;
@@ -68,20 +65,22 @@ class Launcher : public anna::comm::Application {
   MyCounterRecorderClock *a_counterRecorderClock;
 
   // Nodes deployment:
-  realm_nodes_t a_nodes;
-  RealmNode *a_workingNode;
-  RealmNode *a_operatedRealm; // auxiliary for eventOperation
+  anna::diameter::comm::OriginHost *a_workingNode;
+  anna::diameter::comm::OriginHost *a_operatedHost; // auxiliary for eventOperation
 
   // comm resources:
   anna::comm::ServerSocket* a_httpServerSocket; // HTTP
 
-  const anna::Millisecond &getADMLMinResolution() const throw() { return a_admlMinResolution; }
+  std::string getSignalUSR2InputFile() const throw();
+  std::string getSignalUSR2OutputFile() const throw();
 
   void servicesFromXML(const anna::xml::Node* servicesNode, bool eventOperation) throw(anna::RuntimeException);
   anna::Millisecond checkTimeMeasure(const std::string &parameter, const std::string &value) throw(anna::RuntimeException);
   void initialize() throw(anna::RuntimeException); // HTTP
   void run() throw(anna::RuntimeException);
 
+
+
 public:
   Launcher();
   //~Launcher(); TODO
@@ -90,13 +89,14 @@ public:
   void startServices() throw(anna::RuntimeException);
 
   bool setWorkingNode(const std::string &name) throw();
-  RealmNode *getRealmNode(const std::string &realmName) const throw(anna::RuntimeException);
-  RealmNode *getRealmNode(const anna::diameter::codec::Message &message) const throw(anna::RuntimeException);
-  bool uniqueRealm() const throw() { return (a_nodes.size() == 1); }
-
-  // Operated realm for communication resources smart assignment ////////////////////////////////////////////////////////////
-  void updateOperatedRealmNodeWithMessage(const anna::diameter::codec::Message &message) throw(anna::RuntimeException);
-  RealmNode *getOperatedRealm() const throw(anna::RuntimeException);
+  anna::diameter::comm::OriginHost *getOriginHost(const std::string &name) const throw(anna::RuntimeException);
+  anna::diameter::comm::OriginHost *getOriginHost(const anna::diameter::codec::Message &message) const throw(anna::RuntimeException);
+  bool uniqueOriginHost() const throw();
+
+  // Operated host for communication resources smart assignment ////////////////////////////////////////////////////////////
+  void updateOperatedOriginHostWithMessage(const anna::diameter::codec::Message &message) throw(anna::RuntimeException);
+  anna::diameter::comm::OriginHost *getWorkingNode() const throw(anna::RuntimeException);
+  anna::diameter::comm::OriginHost *getOperatedHost() const throw(anna::RuntimeException);
   MyDiameterEntity *getOperatedEntity() const throw(anna::RuntimeException);
   MyLocalServer *getOperatedServer() const throw(anna::RuntimeException);
   MyDiameterEngine *getOperatedEngine() const throw(anna::RuntimeException);
@@ -104,19 +104,21 @@ public:
 
 
   MyCommunicator *getCommunicator() throw() { return a_communicator; }
-  void eventOperation(const std::string &, std::string &) throw(anna::RuntimeException);
+  bool eventOperation(const std::string &, std::string &) throw(anna::RuntimeException); // returns success/failed
   void forceCountersRecord() throw(anna::RuntimeException) { if (a_counterRecorderClock) a_counterRecorderClock->tick(); }
+  void logStatisticsSamples(const std::string &conceptsList) throw();
+
 
   anna::xml::Node* asXML(anna::xml::Node* parent) const throw();
   void resetStatistics() throw();
   void resetCounters() throw();
   void signalUSR2() throw(anna::RuntimeException);
-  std::string help() const throw();
+  void signalTerminate() throw(anna::RuntimeException);
   anna::xml::Node* oamAsXML(anna::xml::Node* parent) const throw();
   anna::xml::Node* statsAsXML(anna::xml::Node* parent) const throw();
 
   // helpers
-  bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const throw();
+  bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const throw(anna::RuntimeException);
 
   friend class TestManager;
 };