28 std::vector<std::shared_ptr<MemoryPersistenceStrategy>>& strategies) :
29 strategies_(strategies)
37 std::vector<std::string>
40 std::vector<std::string> keys;
42 for (
auto& strategy : strategies_)
44 std::vector<std::string> strategyKeys = strategy->getContainerKeys(
id);
45 keys.insert(keys.end(), strategyKeys.begin(), strategyKeys.end());
55 std::vector<std::string>
58 std::vector<std::string> keys;
60 for (
auto& strategy : strategies_)
62 std::vector<std::string> strategyKeys = strategy->getItemKeys(
id);
63 keys.insert(keys.end(), strategyKeys.begin(), strategyKeys.end());
75 for (
auto& s : strategies_)
77 if (s->containsContainer(
id, key))
92 for (
auto& s : strategies_)
94 if (s->containsItem(
id, key))
108 const std::string key,
109 std::vector<unsigned char>&
data)
override
111 for (
auto& s : strategies_)
113 s->storeItem(
id, key,
data);
120 std::vector<unsigned char>
123 for (
auto& s : strategies_)
125 if (s->containsItem(
id, key))
127 return s->retrieveItem(
id, key);
131 return std::vector<unsigned char>();
137 for (
auto& s : strategies_)
139 if (s->containsItem(
id, key))
141 return s->retrieveItemWithOrigin(
id, key);
145 return {
"undefined4", std::vector<unsigned char>()};
156 for (
auto& s : strategies_)
158 s->setExportName(exportName);
169 strategies_.emplace_back(strategy);
184 for (
auto& s : strategies_)
186 s->createPropertyDefinitions(defs, prefix);
193 bool enabled =
false;
195 for (
auto& s : strategies_)
197 enabled &= s->isEnabled();
206 for (
auto& s : strategies_)
215 for (
auto& s : strategies_)
223 std::vector<std::shared_ptr<MemoryPersistenceStrategy>> strategies_;
MemoryPersistenceStrategy()
std::string exportName_
Name of the specific memory export where our items should be stored.
void addStrategy(std::shared_ptr< MemoryPersistenceStrategy > strategy)
Add another strategy to the end.
RedundantPersistenceStrategy(std::vector< std::shared_ptr< MemoryPersistenceStrategy > > &strategies)
bool containsContainer(const armarx::armem::MemoryID &id, std::string key) override
Checks if any strategy contains the container.
std::vector< std::string > getItemKeys(const armarx::armem::MemoryID &id) override
Returns all items over all strategies.
ItemResult retrieveItemWithOrigin(const armarx::armem::MemoryID &id, std::string &key) override
Retrieves the actual data but also appends the origin which is in this case the strategy identifier.
bool containsItem(const armarx::armem::MemoryID &id, std::string key) override
Checks if any strategy contains the item.
std::vector< std::string > getContainerKeys(const armarx::armem::MemoryID &id) override
Returns all containers over all strategies.
void clearStrategies()
Removes all strategies.
void setExportName(const std::string &exportName) override
Sets the export name for all strategies.
RedundantPersistenceStrategy()=default
void storeItem(const armarx::armem::MemoryID &id, const std::string key, std::vector< unsigned char > &data) override
Stores the item to every strategy.
std::vector< unsigned char > retrieveItem(const armarx::armem::MemoryID &id, std::string key) override
Retrieves the data of the item following the FIFO principle (if the item exists at any strategy).
bool isEnabled() override
void createPropertyDefinitions(PropertyDefinitionsPtr &defs, const std::string &prefix) override
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
Retrieved items' data with an origin (resp.