ReadWritePluginUser.cpp
Go to the documentation of this file.
1 #include "ReadWritePluginUser.h"
2 
5 
9 
13 
14 #include "Plugin.h"
15 
17 {
18 
20  {
21  addPlugin(plugin);
22  }
23 
25  {
26  }
27 
28  void
30  {
31  plugin->setMemoryName(memoryName);
32  }
33 
34  // WRITING
35  data::AddSegmentsResult
36  ReadWritePluginUser::addSegments(const data::AddSegmentsInput& input, const Ice::Current&)
37  {
39  bool addCoreSegmentOnUsage = false;
40  return addSegments(input, addCoreSegmentOnUsage);
41  }
42 
43  data::AddSegmentsResult
44  ReadWritePluginUser::addSegments(const data::AddSegmentsInput& input, bool addCoreSegments)
45  {
47  data::AddSegmentsResult result = iceAdapter().addSegments(input, addCoreSegments);
48  return result;
49  }
50 
51  data::CommitResult
52  ReadWritePluginUser::commit(const data::Commit& commitIce, const Ice::Current&)
53  {
55  return iceAdapter().commitLocking(commitIce);
56  }
57 
58  void ReadWritePluginUser::clearWorkingMemory(const Ice::Current&)
59  {
61 
62  ARMARX_DEBUG << "Clear working memory id=" << iceAdapter().workingMemory->id().cleanID().str();
63 
64  iceAdapter().workingMemory->forEachCoreSegment([](auto& coreSegment) {
65  coreSegment.clear();
66  });
67  }
68 
69  // READING
70  armem::query::data::Result
71  ReadWritePluginUser::query(const armem::query::data::Input& input, const Ice::Current&)
72  {
74  return iceAdapter().query(input);
75  }
76 
77  armem::query::data::Result
78  ReadWritePluginUser::queryLTM(const armem::query::data::Input& input, bool storeIntoWM, const Ice::Current&)
79  {
81  return iceAdapter().queryLTM(input, storeIntoWM);
82  }
83 
84  structure::data::GetServerStructureResult
86  {
88  return iceAdapter().getServerStructure();
89  }
90 
91  // LTM STORING AND RECORDING
92  dto::DirectlyStoreResult
93  ReadWritePluginUser::directlyStore(const dto::DirectlyStoreInput& input, const Ice::Current&)
94  {
96  return iceAdapter().directlyStore(input);
97  }
98 
99  dto::StartRecordResult
100  ReadWritePluginUser::startRecord(const dto::StartRecordInput& startRecordInput,
101  const Ice::Current&)
102  {
103  ARMARX_TRACE;
104  return iceAdapter().startRecord(startRecordInput);
105  }
106 
107  dto::StopRecordResult
108  ReadWritePluginUser::stopRecord(const Ice::Current&)
109  {
110  ARMARX_TRACE;
111  return iceAdapter().stopRecord();
112  }
113 
114  dto::RecordStatusResult
116  {
117  ARMARX_TRACE;
118  return iceAdapter().getRecordStatus();
119  }
120 
121  Plugin&
123  {
124  return *plugin;
125  }
126 
127  wm::Memory&
129  {
130  return plugin->workingMemory;
131  }
132 
135  {
136  return plugin->iceAdapter;
137  }
138 
139  ltm::Memory&
141  {
142  return plugin->longtermMemory;
143  }
144 
145  // ACTIONS
146  armem::actions::GetActionsOutputSeq
147  ReadWritePluginUser::getActions(const armem::actions::GetActionsInputSeq& inputs,
148  const ::Ice::Current& /*unused*/)
149  {
150  return getActions(inputs);
151  }
152 
153  armem::actions::GetActionsOutputSeq
154  ReadWritePluginUser::getActions(const armem::actions::GetActionsInputSeq& inputs)
155  {
156  (void)inputs;
157  return {};
158  }
159 
160  armem::actions::ExecuteActionOutputSeq
161  ReadWritePluginUser::executeActions(const armem::actions::ExecuteActionInputSeq& inputs,
162  const ::Ice::Current& /*unused*/)
163  {
164  return executeActions(inputs);
165  }
166 
167  armem::actions::ExecuteActionOutputSeq
168  ReadWritePluginUser::executeActions(const armem::actions::ExecuteActionInputSeq& inputs)
169  {
170  return {};
171  }
172 
173  // PREDICTIONS
174  armem::prediction::data::PredictionResultSeq
175  ReadWritePluginUser::predict(const armem::prediction::data::PredictionRequestSeq& requests)
176  {
177  return iceAdapter().predict(requests);
178  }
179 
180  armem::prediction::data::EngineSupportMap
182  {
183  return iceAdapter().getAvailableEngines();
184  }
185 
186  armem::prediction::data::PredictionResultSeq
187  ReadWritePluginUser::predict(const armem::prediction::data::PredictionRequestSeq& requests,
188  const ::Ice::Current& /*unused*/)
189  {
190  return predict(requests);
191  }
192 
193  armem::prediction::data::EngineSupportMap
194  ReadWritePluginUser::getAvailableEngines(const ::Ice::Current& /*unused*/)
195  {
196  return getAvailableEngines();
197  }
198 
201  {
202  // Only take the core segments defined in the property 'loadedCoreSegments'
203  // Why not full? Legacy code, previously also only retrieved not all core segments.
205  return armem::CommitResult();
206  }
207 
208  void ReadWritePluginUser::useRestPersistenceStrategy(const std::string& identifier, const std::string& exportName, const std::string& host, int port, bool overwritePrevStrategy, const ::Ice::Current&)
209  {
210  ARMARX_IMPORTANT << "Setting persistence strategy=rest via PROXY";
211 
212  std::shared_ptr<armem::server::ltm::persistence::RestPersistence> restPersistence =
213  std::make_shared<armem::server::ltm::persistence::RestPersistence>(identifier,
214  exportName,
215  host,
216  port);
217 
218  ARMARX_INFO << "MemoryID=" << iceAdapter().longtermMemory->getMemoryID().str();
219  ARMARX_INFO << "Identifier=" << identifier;
220  ARMARX_INFO << "Export name=" << exportName;
221  ARMARX_INFO << "Host=" << host;
222  ARMARX_INFO << "Port=" << port;
223  ARMARX_INFO << "OverwritePrevStrategy=" << overwritePrevStrategy;
224 
225  if (overwritePrevStrategy)
226  {
227  iceAdapter().longtermMemory->getPersistenceStrategy()->clearStrategies();
228  iceAdapter().longtermMemory->getPersistenceStrategy()->addStrategy(restPersistence);
229  }
230  else
231  {
232  iceAdapter().longtermMemory->getPersistenceStrategy()->addStrategy(restPersistence);
233  }
234  }
235 
236  void ReadWritePluginUser::useDiskPersistenceStrategy(const std::string& identifier, const std::string& exportName, const std::string& exportPath, bool overwritePrevStrategy, const ::Ice::Current&)
237  {
238  ARMARX_IMPORTANT << "Setting persistence strategy=disk via PROXY";
239 
240  std::shared_ptr<armem::server::ltm::persistence::DiskPersistence> diskPersistence =
241  std::make_shared<armem::server::ltm::persistence::DiskPersistence>(identifier,
242  exportName,
243  std::filesystem::path(exportPath));
244 
245  ARMARX_INFO << "MemoryID=" << iceAdapter().longtermMemory->getMemoryID().str();
246  ARMARX_INFO << "Identifier=" << identifier;
247  ARMARX_INFO << "Export name=" << exportName;
248  ARMARX_INFO << "Export path=" << exportPath;
249  ARMARX_INFO << "OverwritePrevStrategy=" << overwritePrevStrategy;
250 
251  if (overwritePrevStrategy)
252  {
253  iceAdapter().longtermMemory->getPersistenceStrategy()->clearStrategies();
254  iceAdapter().longtermMemory->getPersistenceStrategy()->addStrategy(diskPersistence);
255  }
256  else
257  {
258  iceAdapter().longtermMemory->getPersistenceStrategy()->addStrategy(diskPersistence);
259  }
260  }
261 
262  void ReadWritePluginUser::useMongoDbPersistenceStrategy(const std::string& identifier,const std::string& exportName, bool overwritePrevStrategy, const ::Ice::Current&)
263  {
264  // TODO
265  }
266 
267  void ReadWritePluginUser::loadLTMintoWM(bool complete, const ::Ice::Current&)
268  {
269  if (complete)
270  {
272  }
273  else
274  {
275  // Only take the core segments defined in the property 'loadedCoreSegments'
277  }
278  }
279 
280 } // namespace armarx::armem::server::plugins
armarx::armem::server::MemoryToIceAdapter::workingMemory
server::wm::Memory * workingMemory
Definition: MemoryToIceAdapter.h:89
armarx::armem::server::plugins::ReadWritePluginUser::predict
virtual armem::prediction::data::PredictionResultSeq predict(const armem::prediction::data::PredictionRequestSeq &requests)
Definition: ReadWritePluginUser.cpp:175
armarx::armem::server::plugins::ReadWritePluginUser::directlyStore
virtual dto::DirectlyStoreResult directlyStore(const dto::DirectlyStoreInput &, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:93
RestPersistence.h
armarx::armem::server::ltm::detail::MemoryItem::getMemoryID
MemoryID getMemoryID() const
Definition: MemoryItem.h:33
armarx::armem::server::plugins::Plugin::iceAdapter
MemoryToIceAdapter iceAdapter
Helps connecting memory to ice. Used to handle Ice callbacks.
Definition: Plugin.h:70
armarx::armem::server::plugins::ReadWritePluginUser::query
virtual armem::query::data::Result query(const armem::query::data::Input &input, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:71
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:190
armarx::armem::server::MemoryToIceAdapter
Helps connecting a Memory server to the Ice interface.
Definition: MemoryToIceAdapter.h:19
armarx::armem::server::plugins::ReadWritePluginUser::getServerStructure
virtual armem::structure::data::GetServerStructureResult getServerStructure(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:85
armarx::armem::server::MemoryToIceAdapter::longtermMemory
server::ltm::Memory * longtermMemory
Definition: MemoryToIceAdapter.h:90
armarx::armem::server::plugins::ReadWritePluginUser::ReadWritePluginUser
ReadWritePluginUser()
Definition: ReadWritePluginUser.cpp:19
armarx::armem::server::MemoryToIceAdapter::startRecord
dto::StartRecordResult startRecord(const dto::StartRecordInput &startRecordInput)
Definition: MemoryToIceAdapter.cpp:532
ReadWritePluginUser.h
armarx::armem::MemoryID::str
std::string str(bool escapeDelimiters=true) const
Get a string representation of this memory ID.
Definition: MemoryID.cpp:102
Prediction.h
armarx::armem::server::plugins::ReadWritePluginUser::stopRecord
virtual dto::StopRecordResult stopRecord(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:108
armarx::armem::server::plugins::ReadWritePluginUser::setMemoryName
void setMemoryName(const std::string &memoryName)
Definition: ReadWritePluginUser.cpp:29
armarx::ManagedIceObject::addPlugin
PluginT * addPlugin(const std::string prefix="", ParamsT &&... params)
Definition: ManagedIceObject.h:186
RedundantPersistenceStrategy.h
armarx::armem::server::plugins::ReadWritePluginUser::getActions
virtual armem::actions::GetActionsOutputSeq getActions(const armem::actions::GetActionsInputSeq &inputs)
Definition: ReadWritePluginUser.cpp:154
armarx::armem::server::plugins::ReadWritePluginUser::workingMemory
server::wm::Memory & workingMemory()
Definition: ReadWritePluginUser.cpp:128
armarx::armem::server::MemoryToIceAdapter::predict
prediction::data::PredictionResultSeq predict(prediction::data::PredictionRequestSeq requests)
Definition: MemoryToIceAdapter.cpp:623
armarx::armem::server::MemoryToIceAdapter::getServerStructure
armem::structure::data::GetServerStructureResult getServerStructure()
Definition: MemoryToIceAdapter.cpp:389
armarx::armem::server::ltm::Memory::getPersistenceStrategy
std::shared_ptr< persistence::RedundantPersistenceStrategy > getPersistenceStrategy() const
Definition: Memory.h:66
armarx::armem::server::plugins::ReadWritePluginUser::getAvailableEngines
virtual armem::prediction::data::EngineSupportMap getAvailableEngines()
Definition: ReadWritePluginUser.cpp:181
armarx::armem::base::MemoryBase::forEachCoreSegment
bool forEachCoreSegment(CoreSegmentFunctionT &&func)
Definition: MemoryBase.h:188
armarx::armem::server::ltm::Memory
A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mong...
Definition: Memory.h:20
armarx::armem::server::MemoryToIceAdapter::reloadFromLTMOnStartup
armem::CommitResult reloadFromLTMOnStartup()
Triggers a reload (.
Definition: MemoryToIceAdapter.cpp:496
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
armarx::armem::server::wm::Memory
Definition: memory_definitions.h:122
armarx::armem::server::MemoryToIceAdapter::reloadPropertyDefinedCoreSegmentsFromLTM
armem::CommitResult reloadPropertyDefinedCoreSegmentsFromLTM()
Definition: MemoryToIceAdapter.cpp:471
armarx::armem::server::plugins::ReadWritePluginUser::addSegments
virtual data::AddSegmentsResult addSegments(const data::AddSegmentsInput &input, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:36
Plugin.h
armarx::armem::server::plugins::Plugin::longtermMemory
server::ltm::Memory longtermMemory
A manager class for the ltm. It internally holds a normal wm instance as a cache.
Definition: Plugin.h:84
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:184
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:12
error.h
armarx::armem::CommitResult
Result of a Commit.
Definition: Commit.h:110
armarx::armem::server::plugins::ReadWritePluginUser::queryLTM
virtual armem::query::data::Result queryLTM(const armem::query::data::Input &input, bool storeIntoWM, const Ice::Current &=Ice::emptyCurrent) override
Queries only the LTMs of the memory server.
Definition: ReadWritePluginUser.cpp:78
armarx::armem::server::plugins::ReadWritePluginUser::iceAdapter
MemoryToIceAdapter & iceAdapter()
Definition: ReadWritePluginUser.cpp:134
armarx::armem::server::plugins::ReadWritePluginUser::useMongoDbPersistenceStrategy
virtual void useMongoDbPersistenceStrategy(const std::string &identifier, const std::string &exportName, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a mongodb persistence strategy for storing the wm as ltm Uses a mongodb as ltm sink.
Definition: ReadWritePluginUser.cpp:262
armarx::armem::server::MemoryToIceAdapter::getRecordStatus
dto::RecordStatusResult getRecordStatus()
Definition: MemoryToIceAdapter.cpp:588
armarx::armem::server::plugins::ReadWritePluginUser::memoryServerPlugin
Plugin & memoryServerPlugin()
Definition: ReadWritePluginUser.cpp:122
armarx::armem::base::detail::MemoryItem::id
MemoryID & id()
Definition: MemoryItem.h:25
MemoryToIceAdapter.h
armarx::armem::server::MemoryToIceAdapter::getAvailableEngines
prediction::data::EngineSupportMap getAvailableEngines()
Definition: MemoryToIceAdapter.cpp:631
Component.h
armarx::armem::server::MemoryToIceAdapter::stopRecord
dto::StopRecordResult stopRecord()
Definition: MemoryToIceAdapter.cpp:546
armarx::armem::server::plugins::ReadWritePluginUser::~ReadWritePluginUser
virtual ~ReadWritePluginUser() override
Definition: ReadWritePluginUser.cpp:24
armarx::armem::server::MemoryToIceAdapter::directlyStore
dto::DirectlyStoreResult directlyStore(const dto::DirectlyStoreInput &directlStoreInput)
Definition: MemoryToIceAdapter.cpp:517
armarx::armem::server::plugins::ReadWritePluginUser::useDiskPersistenceStrategy
virtual void useDiskPersistenceStrategy(const std::string &identifier, const std::string &exportName, const std::string &exportPath, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a disk persistence strategy for storing the wm as ltm Uses the disk as ltm sink.
Definition: ReadWritePluginUser.cpp:236
armarx::armem::server::plugins::ReadWritePluginUser::commit
virtual data::CommitResult commit(const data::Commit &commit, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:52
ExpressionException.h
armarx::armem::server::plugins::ReadWritePluginUser::reloadFromLTM
armem::CommitResult reloadFromLTM()
Definition: ReadWritePluginUser.cpp:200
armarx::armem::server::plugins::ReadWritePluginUser::executeActions
virtual armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq &inputs)
Definition: ReadWritePluginUser.cpp:168
armarx::armem::MemoryID::cleanID
MemoryID cleanID() const
Definition: MemoryID.cpp:133
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
armarx::armem::server::plugins::ReadWritePluginUser::useRestPersistenceStrategy
virtual void useRestPersistenceStrategy(const std::string &identifier, const std::string &exportName, const std::string &host, int port, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a rest persistence strategy for storing the wm as ltm Uses a rest server as ltm sink.
Definition: ReadWritePluginUser.cpp:208
armarx::armem::laser_scans::constants::memoryName
const std::string memoryName
Definition: constants.h:28
armarx::armem::server::plugins::Plugin::setMemoryName
void setMemoryName(const std::string &memoryName)
Set the name of the wm and the ltm.
Definition: Plugin.cpp:156
armarx::armem::server::MemoryToIceAdapter::addSegments
data::AddSegmentsResult addSegments(const data::AddSegmentsInput &input, bool addCoreSegments=false)
Definition: MemoryToIceAdapter.cpp:105
DiskPersistence.h
armarx::armem::server::plugins::ReadWritePluginUser::longtermMemory
server::ltm::Memory & longtermMemory()
Definition: ReadWritePluginUser.cpp:140
armarx::armem::server::plugins::Plugin::workingMemory
server::wm::Memory workingMemory
The actual memory.
Definition: Plugin.h:67
armarx::armem::server::MemoryToIceAdapter::reloadAllFromLTM
armem::CommitResult reloadAllFromLTM()
Loads all core segments and their data from the LTM.
Definition: MemoryToIceAdapter.cpp:420
armarx::armem::server::plugins
Definition: Plugin.cpp:17
armarx::armem::server::plugins::ReadWritePluginUser::startRecord
virtual dto::StartRecordResult startRecord(const dto::StartRecordInput &startRecordInput, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:100
armarx::armem::server::plugins::Plugin
Definition: Plugin.h:26
armarx::armem::server::MemoryToIceAdapter::queryLTM
query::data::Result queryLTM(const armem::query::data::Input &input, bool storeIntoWM)
Query the LTMs of the memory server.
Definition: MemoryToIceAdapter.cpp:345
armarx::armem::server::plugins::ReadWritePluginUser::clearWorkingMemory
virtual void clearWorkingMemory(const Ice::Current &=Ice::emptyCurrent) override
Clears the working memory usings its clear feature.
Definition: ReadWritePluginUser.cpp:58
armarx::armem::server::plugins::ReadWritePluginUser::loadLTMintoWM
virtual void loadLTMintoWM(bool complete, const ::Ice::Current &) override
Loads the data of the LTMs into the WM.
Definition: ReadWritePluginUser.cpp:267
armarx::armem::server::MemoryToIceAdapter::commitLocking
data::CommitResult commitLocking(const data::Commit &commitIce, Time timeArrived)
Definition: MemoryToIceAdapter.cpp:170
armarx::armem::server::MemoryToIceAdapter::query
query::data::Result query(const armem::query::data::Input &input)
Definition: MemoryToIceAdapter.cpp:319
armarx::armem::server::plugins::ReadWritePluginUser::getRecordStatus
virtual dto::RecordStatusResult getRecordStatus(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:115