ANNA Suite  2020b
Multipurpose development suite for Telco applications
EngineManager.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_diameter_codec_EngineManager_hpp
10 #define anna_diameter_codec_EngineManager_hpp
11 
12 
13 // Project
14 #include <anna/core/Singleton.hpp>
16 
17 // Standard
18 #include <map>
19 
20 
21 namespace anna {
22 
23 namespace xml {
24  class Node;
25 
26 }
27 namespace diameter {
28 
29 namespace codec {
30 
31 class Engine;
32 
33 typedef std::map<anna::diameter::ApplicationId, Engine*> appid_codec_engines_t;
34 typedef std::map<anna::diameter::ApplicationId, Engine*>::const_iterator appid_codec_engines_it;
35 typedef std::map<anna::diameter::ApplicationId, Engine*>::iterator appid_codec_engines_nc_it;
36 
46 class EngineManager : public anna::Singleton <EngineManager> {
47 
48 private:
49 
50  bool a_autoSelectFromApplicationId;
51  appid_codec_engines_t a_appid_codec_engines;
52 
53  // private constructor
54  EngineManager() : a_autoSelectFromApplicationId(true) {};
55 
56 public:
57 
58  virtual ~EngineManager() {;}
59 
63  appid_codec_engines_it begin() const { return a_appid_codec_engines.begin(); }
64 
68  appid_codec_engines_it end() const { return a_appid_codec_engines.end(); }
69 
73  int size() const { return a_appid_codec_engines.size(); }
74 
82  void registerCodecEngine(const ApplicationId &appid, Engine* engine) ;
83 
91  Engine *getCodecEngine(const ApplicationId &appid) const ;
92 
102  return ((size() != 1) ? NULL : begin()->second);
103  }
104 
118  void selectFromApplicationId (bool enable) { a_autoSelectFromApplicationId = enable; }
119 
126  bool selectFromApplicationId (void) { return a_autoSelectFromApplicationId; }
127 
133  virtual anna::xml::Node* asXML(anna::xml::Node* parent) const ;
134 
135 
137 };
138 
139 }
140 }
141 }
142 
143 #endif
144 
int size() const
Definition: EngineManager.hpp:73
Definition: Engine.hpp:42
void selectFromApplicationId(bool enable)
Definition: EngineManager.hpp:118
Definition: Node.hpp:56
Definition: Singleton.hpp:76
std::map< anna::diameter::ApplicationId, Engine * >::iterator appid_codec_engines_nc_it
Definition: EngineManager.hpp:35
std::map< anna::diameter::ApplicationId, Engine * >::const_iterator appid_codec_engines_it
Definition: EngineManager.hpp:34
std::map< anna::diameter::ApplicationId, Engine * > appid_codec_engines_t
Definition: EngineManager.hpp:31
virtual ~EngineManager()
Definition: EngineManager.hpp:58
bool selectFromApplicationId(void)
Definition: EngineManager.hpp:126
Engine * getMonoStackCodecEngine() const
Definition: EngineManager.hpp:101
xml::Node Node
Definition: Node.hpp:21
Definition: app.hpp:12
unsigned int ApplicationId
Definition: defines.hpp:64
appid_codec_engines_it begin() const
Definition: EngineManager.hpp:63
Definition: functions.hpp:118
Definition: EngineManager.hpp:46
appid_codec_engines_it end() const
Definition: EngineManager.hpp:68