ANNA Suite  2020b
Multipurpose development suite for Telco applications
Repository.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_dbos_Repository_hpp
10 #define anna_dbos_Repository_hpp
11 
12 #include <vector>
13 
14 #include <anna/core/mt/Mutex.hpp>
15 
17 #include <anna/dbos/defines.hpp>
18 
19 namespace anna {
20 
21 namespace xml {
22 class Node;
23 }
24 
25 namespace comm {
26 class INetAddress;
27 class Delivery;
28 }
29 
30 namespace dbms {
31 class Connection;
32 }
33 
34 namespace dbos {
35 
39 class Repository : public Mutex {
40 public:
41  typedef std::map <StorageId, StorageArea*> container;
42  typedef container::const_iterator const_storage_iterator;
43  typedef container::iterator storage_iterator;
49  explicit Repository(const char* name);
50 
55  explicit Repository(const std::string& name);
56 
80  StorageArea* createStorageArea(const StorageId index, const char* name, const Size maxSize, ObjectAllocator objectAllocator, const int errorCode, const StorageArea::AccessMode::_v aamm = StorageArea::AccessMode::ReadOnly)
81  noexcept(false);
82 
91  StorageArea* findStorageArea(const StorageId index) ;
92 
96  void clear() noexcept(false);
97 
102  const_storage_iterator storage_begin() const { return a_storageAreas.begin(); }
103 
108  const_storage_iterator storage_end() const { return a_storageAreas.end(); }
109 
115  static const StorageArea* storageArea(const_storage_iterator& ii) { return ii->second; }
116 
122  xml::Node* asXML(xml::Node* parent) const ;
123 
124 protected:
129  storage_iterator storage_begin() { return a_storageAreas.begin(); }
130 
135  storage_iterator storage_end() { return a_storageAreas.end(); }
136 
142  static StorageArea* storageArea(storage_iterator& ii) { return ii->second; }
143 
144 private:
145  std::string a_name;
146  container a_storageAreas;
147 
148  Repository(const Repository&);
149 };
150 
151 }
152 }
153 
154 #endif
storage_iterator storage_begin()
Definition: Repository.hpp:129
Definition: Node.hpp:56
container::iterator storage_iterator
Definition: Repository.hpp:43
_v
Definition: StorageArea.hpp:68
std::map< StorageId, StorageArea * > container
Definition: Repository.hpp:41
Definition: Repository.hpp:39
unsigned int Size
Definition: defines.hpp:17
xml::Node Node
Definition: Node.hpp:21
static StorageArea * storageArea(storage_iterator &ii)
Definition: Repository.hpp:142
static const StorageArea * storageArea(const_storage_iterator &ii)
Definition: Repository.hpp:115
Definition: app.hpp:12
ptrnumber StorageId
Definition: defines.hpp:19
Definition: Mutex.hpp:41
Definition: StorageArea.hpp:58
container::const_iterator const_storage_iterator
Definition: Repository.hpp:42
const_storage_iterator storage_end() const
Definition: Repository.hpp:108
storage_iterator storage_end()
Definition: Repository.hpp:135
Object *(* ObjectAllocator)()
Definition: ObjectAllocator.hpp:18