#include <anna/core/core.hpp>
#include <anna/comm/comm.hpp>
#include <anna/time/Date.hpp>
+#include <anna/diameter/codec/Message.hpp>
// Process
#include <MyCommunicator.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##"
+
+
namespace anna {
namespace timex {
class Engine;
}
class TestManager;
+class RealmNode;
+class MyDiameterEntity;
+class MyLocalServer;
+class MyDiameterEngine;
// RealmNode resources
class RealmNode;
// Core engines:
MyCommunicator *a_communicator;
- anna::diameter::codec::Engine *a_codecEngine;
- anna::diameter::stack::Dictionary *a_baseProtocolDictionary;
anna::timex::Engine* a_timeEngine;
MyCounterRecorder *a_counterRecorder;
anna::Millisecond a_admlMinResolution;
// Nodes deployment:
realm_nodes_t a_nodes;
RealmNode *a_workingNode;
+ RealmNode *a_operatedRealm; // auxiliary for eventOperation
// comm resources:
anna::comm::ServerSocket* a_httpServerSocket; // HTTP
public:
Launcher();
+ //~Launcher(); TODO
void loadServices(const std::string & xmlPathFile, bool eventOperation = false) throw(anna::RuntimeException);
void startServices() throw(anna::RuntimeException);
- anna::diameter::codec::Engine *getCodecEngine() const throw() { return a_codecEngine; }
- //anna::diameter::stack::Dictionary *getBaseProtocolDictionary() const throw() { return a_baseProtocolDictionary; }
- RealmNode *getWorkingNode() const throw(anna::RuntimeException); // management operations working node
- bool setWorkingNode(const std::string &name) throw(); // we could update ignoreFlagsOnValidation/integrationAndDebugging over the global codec engine
- // but finally, that configuration issues will be global to the process.
+ 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); }
- RealmNode *getRealmNode(const std::string &realmName) const throw();
+ // Operated realm for communication resources smart assignment ////////////////////////////////////////////////////////////
+ void updateOperatedRealmNodeWithMessage(const anna::diameter::codec::Message &message) throw(anna::RuntimeException);
+ RealmNode *getOperatedRealm() const throw(anna::RuntimeException);
+ MyDiameterEntity *getOperatedEntity() const throw(anna::RuntimeException);
+ MyLocalServer *getOperatedServer() const throw(anna::RuntimeException);
+ MyDiameterEngine *getOperatedEngine() const throw(anna::RuntimeException);
+ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MyCommunicator *getCommunicator() throw() { return a_communicator; }
void resetCounters() throw();
void signalUSR2() throw(anna::RuntimeException);
std::string help() const throw();
+ anna::xml::Node* oamAndStatsAsXML(anna::xml::Node* parent) const throw();
// helpers
bool getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const throw();