ANNA Suite  2020b
Multipurpose development suite for Telco applications
OriginHostManager.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_comm_OriginHostManager_hpp
10 #define anna_diameter_comm_OriginHostManager_hpp
11 
12 
13 // Project
14 #include <anna/core/Singleton.hpp>
16 #include <anna/core/util/defines.hpp> // U32
17 
18 
19 // Standard
20 #include <map>
21 #include <string>
22 
23 
24 namespace anna {
25 
26 namespace xml {
27  class Node;
28 
29 }
30 namespace diameter {
31 
32 namespace comm {
33 
34 class OriginHost;
35 
36 typedef std::map<std::string, anna::diameter::comm::OriginHost*> origin_hosts_t;
37 typedef std::map<std::string, anna::diameter::comm::OriginHost*>::const_iterator origin_hosts_it;
38 typedef std::map<std::string, anna::diameter::comm::OriginHost*>::iterator origin_hosts_nc_it;
39 
40 
45 class OriginHostManager : public anna::Singleton <OriginHostManager> {
46 
47 private:
48 
49  origin_hosts_t a_origin_hosts;
50  std::map<std::string /* remove OH name */, std::string /* own OH name */> a_remote_to_own_origin_hosts{};
51 
52 
53  // private constructor
54  OriginHostManager() {};
55 
56 public:
57 
58  virtual ~OriginHostManager() {;}
59 
63  origin_hosts_it begin() const { return a_origin_hosts.begin(); }
64 
68  origin_hosts_it end() const { return a_origin_hosts.end(); }
69 
73  int size() const { return a_origin_hosts.size(); }
74 
82  void registerOriginHost(const std::string &name, OriginHost* originHost) ;
83 
91  void registerRemoteOriginHost(const std::string &remoteName, const std::string &ownName);
92 
100  OriginHost *getOriginHost(const std::string &name) const ;
101 
110  OriginHost * getOriginHostForRemoteOriginHost(const std::string &name) const;
111 
121  OriginHost *getOriginHost(const anna::U32 &applicationId) const;
122 
123 
129  virtual anna::xml::Node* asXML(anna::xml::Node* parent) const ;
130 
131 
133 };
134 
135 }
136 }
137 }
138 
139 #endif
140 
origin_hosts_it end() const
Definition: OriginHostManager.hpp:68
Definition: Node.hpp:56
Definition: Singleton.hpp:76
int size() const
Definition: OriginHostManager.hpp:73
Definition: OriginHost.hpp:41
uint32_t U32
Definition: defines.hpp:75
Definition: OriginHostManager.hpp:45
xml::Node Node
Definition: Node.hpp:21
std::map< std::string, anna::diameter::comm::OriginHost * >::iterator origin_hosts_nc_it
Definition: OriginHostManager.hpp:38
Definition: app.hpp:12
origin_hosts_it begin() const
Definition: OriginHostManager.hpp:63
std::map< std::string, anna::diameter::comm::OriginHost * > origin_hosts_t
Definition: OriginHostManager.hpp:34
std::map< std::string, anna::diameter::comm::OriginHost * >::const_iterator origin_hosts_it
Definition: OriginHostManager.hpp:37
virtual ~OriginHostManager()
Definition: OriginHostManager.hpp:58