MemoryToIceAdapter.cpp
Go to the documentation of this file.
1 #include "MemoryToIceAdapter.h"
2 
3 #include <thread>
4 
9 
17 
19 #include "query_proc/wm/wm.h"
20 
21 namespace armarx::armem::server
22 {
23 
25  server::ltm::Memory* longtermMemory) :
26  workingMemory(workingMemory), longtermMemory(longtermMemory)
27  {
28  }
29 
30  void
31  MemoryToIceAdapter::setMemoryListener(client::MemoryListenerInterfacePrx memoryListener)
32  {
33  this->memoryListenerTopic = memoryListener;
34  }
35 
36  // WRITING
37  data::AddSegmentResult
38  MemoryToIceAdapter::addSegment(const data::AddSegmentInput& input, bool addCoreSegments)
39  {
42 
43  data::AddSegmentResult output;
44 
45  server::wm::CoreSegment* coreSegment = nullptr;
46  try
47  {
48  coreSegment = &workingMemory->getCoreSegment(input.coreSegmentName);
49  }
50  catch (const armem::error::MissingEntry& e)
51  {
52  if (addCoreSegments)
53  {
54  coreSegment = &workingMemory->addCoreSegment(input.coreSegmentName);
55  }
56  else
57  {
58  output.success = false;
59  output.errorMessage = e.what();
60  return output;
61  }
62  }
63  ARMARX_CHECK_NOT_NULL(coreSegment);
64 
65  if (input.providerSegmentName.size() > 0)
66  {
67  coreSegment->doLocked(
68  [&coreSegment, &input]()
69  {
70  try
71  {
72  coreSegment->addProviderSegment(input.providerSegmentName);
73  }
75  {
76  // This is ok.
77  if (input.clearWhenExists)
78  {
79  server::wm::ProviderSegment& provider =
80  coreSegment->getProviderSegment(input.providerSegmentName);
81  provider.clear();
82  }
83  }
84  });
85  }
86 
87  armem::MemoryID segmentID;
88  segmentID.memoryName = workingMemory->name();
89  segmentID.coreSegmentName = input.coreSegmentName;
90  segmentID.providerSegmentName = input.providerSegmentName;
91 
92  output.success = true;
93  output.segmentID = segmentID.str();
94  return output;
95  }
96 
97  data::AddSegmentsResult
98  MemoryToIceAdapter::addSegments(const data::AddSegmentsInput& input, bool addCoreSegments)
99  {
100  ARMARX_TRACE;
102 
103  data::AddSegmentsResult output;
104  for (const auto& i : input)
105  {
106  output.push_back(addSegment(i, addCoreSegments));
107  }
108  return output;
109  }
110 
111  data::CommitResult
112  MemoryToIceAdapter::commit(const data::Commit& commitIce, Time timeArrived)
113  {
114  ARMARX_TRACE;
116  auto handleException = [](const std::string& what)
117  {
118  data::CommitResult result;
119  data::EntityUpdateResult& r = result.results.emplace_back();
120  r.success = false;
121  r.errorMessage = what;
122  return result;
123  };
124 
126  try
127  {
128  ::armarx::armem::fromIce(commitIce, commit, timeArrived);
129  }
130  catch (const aron::error::AronNotValidException& e)
131  {
132  throw;
133  return handleException(e.what());
134  }
135  catch (const Ice::Exception& e)
136  {
137  throw;
138  return handleException(e.what());
139  }
140 
141  armem::CommitResult result = this->commit(commit);
142  data::CommitResult resultIce;
143  toIce(resultIce, result);
144 
145  return resultIce;
146  }
147 
148  data::CommitResult
149  MemoryToIceAdapter::commit(const data::Commit& commitIce)
150  {
151  ARMARX_TRACE;
152  return commit(commitIce, armem::Time::Now());
153  }
154 
157  {
158  ARMARX_TRACE;
159  return this->_commit(commit, false);
160  }
161 
162  data::CommitResult
163  MemoryToIceAdapter::commitLocking(const data::Commit& commitIce, Time timeArrived)
164  {
165  ARMARX_TRACE;
167  auto handleException = [](const std::string& what)
168  {
169  data::CommitResult result;
170  data::EntityUpdateResult& r = result.results.emplace_back();
171  r.success = false;
172  r.errorMessage = what;
173  return result;
174  };
175 
177  try
178  {
179  ::armarx::armem::fromIce(commitIce, commit, timeArrived);
180  }
181  catch (const aron::error::AronNotValidException& e)
182  {
183  throw;
184  return handleException(e.what());
185  }
186  catch (const Ice::Exception& e)
187  {
188  throw;
189  return handleException(e.what());
190  }
191 
192  armem::CommitResult result = this->commitLocking(commit);
193  data::CommitResult resultIce;
194  toIce(resultIce, result);
195 
196  return resultIce;
197  }
198 
199  data::CommitResult
200  MemoryToIceAdapter::commitLocking(const data::Commit& commitIce)
201  {
202  ARMARX_TRACE;
203  return commitLocking(commitIce, armem::Time::Now());
204  }
205 
208  {
209  ARMARX_TRACE;
210  return this->_commit(commit, true);
211  }
212 
214  MemoryToIceAdapter::_commit(const armem::Commit& commit, bool locking)
215  {
216  ARMARX_TRACE;
217  std::vector<data::MemoryID> updatedIDs;
218  const bool publishUpdates = bool(memoryListenerTopic);
219 
220  CommitResult commitResult;
221  for (const EntityUpdate& update : commit.updates)
222  {
223  EntityUpdateResult& result = commitResult.results.emplace_back();
224  try
225  {
226  auto updateResult =
228 
229  result.success = true;
230  result.snapshotID = updateResult.id;
231  result.arrivedTime = update.arrivedTime;
232 
233  for (const auto& snapshot : updateResult.removedSnapshots)
234  {
235  ARMARX_DEBUG << "The id " << snapshot.id() << " was removed from wm";
236  }
237 
238 
239  // Consollidate to ltm(s)
241  {
242  // convert removedSnapshots to Memory
244  armem::wm::toMemory(m, *workingMemory, updateResult.removedSnapshots);
245  //this removes information about segments, because new memory (wm) is used
246 
247  // store memory
248  longtermMemory->store(m);
249  }
250 
251  if (publishUpdates)
252  {
253  data::MemoryID& id = updatedIDs.emplace_back();
254  toIce(id, result.snapshotID);
255  }
256  }
257  catch (const error::ArMemError& e)
258  {
259  result.success = false;
260  result.errorMessage = e.what();
261  }
262  catch (const aron::error::AronException& e)
263  {
264  result.success = false;
265  result.errorMessage = e.what();
266  }
267  catch (const Ice::Exception& e)
268  {
269  result.success = false;
270  result.errorMessage = e.what();
271  }
272  catch (...)
273  {
274  ARMARX_INFO << "Error during LTM consollidation";
275  }
276  }
277 
278  if (publishUpdates)
279  {
280  memoryListenerTopic->memoryUpdated(updatedIDs);
281  }
282 
283  return commitResult;
284  }
285 
286  // READING
287  armem::query::data::Result
288  MemoryToIceAdapter::query(const armem::query::data::Input& input)
289  {
290  ARMARX_TRACE;
293 
294  // Core segment processors will aquire the core segment locks.
297  armem::wm::Memory wmResult = wmServerProcessor.process(input, *workingMemory);
298 
299  armem::query::data::Result result;
300 
301  /*query_proc::ltm_server::MemoryQueryProcessor ltmProcessor;
302  armem::wm::Memory ltmResult = ltmProcessor.process(input, *longtermMemory);
303 
304  if (not ltmResult.empty())
305  {
306 
307  // convert memory ==> meaning resolving references
308  // upon query, the LTM only returns a structure of the data (memory without data)
309  longtermMemory->resolve(ltmResult);
310 
311  // append result to return memory and sanity check
312  wmResult.append(ltmResult);
313  ARMARX_CHECK(not wmResult.empty());
314 
315  // Ist das wirklich notwendig?
316  // query again to limit output size (TODO: Skip if querytype is all)
317  //auto queryInput = armem::client::QueryInput::fromIce(input);
318  //query_proc::wm::MemoryQueryProcessor wm2wmProcessor(armem::query::boolToDataMode(input.withData));
319  //wmResult = wm2wmProcessor.process(queryInput.toIce(), wmResult);
320  //if (wmResult.empty())
321  //{
322  // ARMARX_ERROR << "A merged and postprocessed Memory has no data although at least the LTM result contains data. This indicates that something is wrong.";
323  //}
324 
325  if (longtermMemory->isRecording())
326  {
327  // TODO: also move results of ltm to wm
328  //this->commit(toCommit(ltm_converted));
329 
330  // mark removed entries of wm in viewer
331  // TODO
332  }
333  }*/
334 
335  result.memory = armarx::toIce<data::MemoryPtr>(wmResult);
336 
337  result.success = true;
338  if (result.memory->coreSegments.size() == 0)
339  {
340  ARMARX_DEBUG << "No data in memory found after query.";
341  }
342 
343  return result;
344  }
345 
348  {
349  ARMARX_TRACE;
350  return client::QueryResult::fromIce(query(input.toIce()));
351  }
352 
353  armem::structure::data::GetServerStructureResult
355  {
356  ARMARX_TRACE;
359 
360  armem::structure::data::GetServerStructureResult ret;
361  ret.success = true;
362 
363  wm::Memory structure;
364  structure.id() = workingMemory->id();
365 
366  // Get all info from the WM
368  builder.all();
369  auto query_result = this->query(builder.buildQueryInput());
370  if (query_result.success)
371  {
372  structure.append(query_result.memory);
373  }
374 
375  // Get all info from the LTM
377 
378  ret.serverStructure = armarx::toIce<data::MemoryPtr>(structure);
379 
380  return ret;
381  }
382 
383  // LTM LOADING FROM LTM
384 
385  // LTM STORING AND RECORDING
386  dto::DirectlyStoreResult
387  MemoryToIceAdapter::directlyStore(const dto::DirectlyStoreInput& directlStoreInput)
388  {
389  ARMARX_TRACE;
391 
392  dto::DirectlyStoreResult output;
393  output.success = true;
394 
395  armem::wm::Memory m = armarx::fromIce<armem::wm::Memory>(directlStoreInput.memory);
397 
398  return output;
399  }
400 
401  dto::StartRecordResult
402  MemoryToIceAdapter::startRecord(const dto::StartRecordInput& startRecordInput)
403  {
404  ARMARX_TRACE;
406  ARMARX_IMPORTANT << "Enabling the recording of memory " << longtermMemory->id().str();
408 
409  dto::StartRecordResult ret;
410  ret.success = true;
411 
412  return ret;
413  }
414 
415  dto::StopRecordResult
417  {
418  ARMARX_TRACE;
420  ARMARX_IMPORTANT << "Disabling the recording of memory " << longtermMemory->id().str();
421 
422  //put calling stopRecording into a seperate thread and detach to make sure GUI does not freeze
423  auto ltm = longtermMemory;
424  std::thread stopRecordingThread([&ltm](){
425  ltm->stopRecording();
426  });
427  std::thread savingDataUpdateThread([&ltm](){
428  ltm->bufferFinished();
429  });
430  stopRecordingThread.detach();
431  savingDataUpdateThread.detach();
432 
434  << "Stopped all LTM recordings, please wait with stopping the component until "
435  "all files are written";
436 
437  dto::StopRecordResult ret;
438  ret.success = true;
439 
440  return ret;
441  }
442 
443  dto::RecordStatusResult
445  {
446  dto::RecordStatusResult ret;
447  ret.success = true;
448 
449  long savedSnapshots;
450  long totalSnapshots;
452  [&savedSnapshots, &totalSnapshots](const auto& c)
453  {
454  c.forEachProviderSegment(
455  [&savedSnapshots, &totalSnapshots](const auto& p)
456  {
457  p.forEachEntity(
458  [&savedSnapshots, &totalSnapshots](const auto& e)
459  {
460  savedSnapshots += e.getStatistics().recordedSnapshots;
461 
462  e.forEachSnapshot([&totalSnapshots](const auto&)
463  { totalSnapshots++; });
464  });
465  });
466  });
467 
468  ret.status.savedSnapshots = savedSnapshots;
469  ret.status.totalSnapshots = totalSnapshots;
470 
471  return ret;
472  }
473 
474  // PREDICTION
475  prediction::data::PredictionResultSeq
476  MemoryToIceAdapter::predict(prediction::data::PredictionRequestSeq requests)
477  {
479  armarx::fromIce<std::vector<PredictionRequest>>(requests));
480  return armarx::toIce<prediction::data::PredictionResultSeq>(res);
481  }
482 
483  prediction::data::EngineSupportMap
485  {
486  prediction::data::EngineSupportMap result;
488 
489  // Uncomment once LTM also supports prediction engines.
490 
491  /*prediction::data::EngineSupportMap ltmMap;
492  armarx::toIce(ltmMap, longtermMemory->getAllPredictionEngines());
493  for (const auto& [memoryID, engines] : ltmMap)
494  {
495  auto entryIter = result.find(memoryID);
496  if (entryIter == result.end())
497  {
498  result.emplace(memoryID, engines);
499  }
500  else
501  {
502  // Merge LTM-supported engines with WM-supported engines, removing duplicates
503  std::set<prediction::data::PredictionEngine> engineSet;
504  engineSet.insert(entryIter->second.begin(), entryIter->second.end());
505  engineSet.insert(engines.begin(), engines.end());
506  entryIter->second.assign(engineSet.begin(), engineSet.end());
507  }
508  }*/
509 
510  return result;
511  }
512 
513 } // namespace armarx::armem::server
armarx::armem::server::MemoryToIceAdapter::workingMemory
server::wm::Memory * workingMemory
Definition: MemoryToIceAdapter.h:64
armarx::armem::server::ltm::detail::MemoryBase::isRecording
bool isRecording() const
Definition: MemoryBase.h:225
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:21
memory_conversions.h
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:183
armarx::armem::MemoryID::providerSegmentName
std::string providerSegmentName
Definition: MemoryID.h:52
armarx::armem::Commit
A bundle of updates to be sent to the memory.
Definition: Commit.h:89
armarx::armem::client::query::Builder::buildQueryInput
QueryInput buildQueryInput() const
Definition: Builder.cpp:11
armarx::core::time::DateTime::Now
static DateTime Now()
Definition: DateTime.cpp:55
armarx::armem::EntityUpdateResult
Result of an EntityUpdate.
Definition: Commit.h:72
armarx::armem::server::MemoryToIceAdapter::longtermMemory
server::ltm::Memory * longtermMemory
Definition: MemoryToIceAdapter.h:65
armarx::armem::EntityUpdateResult::arrivedTime
Time arrivedTime
Definition: Commit.h:77
armarx::armem::base::MemoryBase::getCoreSegment
CoreSegmentT & getCoreSegment(const std::string &name)
Definition: MemoryBase.h:132
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
armarx::armem::server::MemoryToIceAdapter::startRecord
dto::StartRecordResult startRecord(const dto::StartRecordInput &startRecordInput)
Definition: MemoryToIceAdapter.cpp:402
armarx::armem::server::MemoryToIceAdapter::memoryListenerTopic
client::MemoryListenerInterfacePrx memoryListenerTopic
Definition: MemoryToIceAdapter.h:67
armarx::armem::MemoryID::str
std::string str(bool escapeDelimiters=true) const
Get a string representation of this memory ID.
Definition: MemoryID.cpp:102
armarx::armem::wm::toMemory
void toMemory(Memory &m, const std::vector< CoreSegment > &e)
Definition: memory_conversions.cpp:6
armarx::armem::toIce
void toIce(data::MemoryID &ice, const MemoryID &id)
Definition: ice_conversions.cpp:21
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
armarx::armem::query::boolToDataMode
DataMode boolToDataMode(bool withData)
Definition: DataMode.cpp:5
armarx::armem::base::MemoryBase::name
std::string & name()
Definition: MemoryBase.h:92
ice_conversions.h
ltm.h
armarx::armem::client::QueryResult
Result of a QueryInput.
Definition: Query.h:50
armarx::armem::server::query_proc::wm_server::MemoryQueryProcessor
Definition: wm.h:195
armarx::armem::MemoryID::coreSegmentName
std::string coreSegmentName
Definition: MemoryID.h:51
armarx::armem::server::MemoryToIceAdapter::predict
prediction::data::PredictionResultSeq predict(prediction::data::PredictionRequestSeq requests)
Definition: MemoryToIceAdapter.cpp:476
armarx::armem::server::MemoryToIceAdapter::getServerStructure
armem::structure::data::GetServerStructureResult getServerStructure()
Definition: MemoryToIceAdapter.cpp:354
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:18
armarx::toIce
void toIce(std::map< IceKeyT, IceValueT > &iceMap, const boost::container::flat_map< CppKeyT, CppValueT > &cppMap)
Definition: ice_conversions_boost_templates.h:15
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:69
armarx::armem::server::MemoryToIceAdapter::setMemoryListener
void setMemoryListener(client::MemoryListenerInterfacePrx memoryListenerTopic)
Definition: MemoryToIceAdapter.cpp:31
armarx::armem::server::wm::Memory
Definition: memory_definitions.h:128
armarx::armem::server::query_proc::base::MemoryQueryProcessorBase::process
ResultMemoryT process(const armem::query::data::Input &input, const MemoryT &memory) const
Definition: MemoryQueryProcessorBase.h:43
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::base::detail::PredictiveContainer::getAllPredictionEngines
std::map< MemoryID, std::vector< PredictionEngine > > getAllPredictionEngines() const
Definition: Predictive.h:99
armarx::core::eigen::fromIce
void fromIce(Eigen::Vector2f &e, const Ice::FloatSeq &ice)
Definition: ice_conversions.cpp:10
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:177
armarx::armem::client::QueryInput
A query for parts of a memory.
Definition: Query.h:23
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:19
error.h
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
wm.h
armarx::aron::error::AronNotValidException
The AronNotValidException class.
Definition: Exception.h:102
armarx::armem::EntityUpdate
An update of an entity for a specific point in time.
Definition: Commit.h:27
armarx::armem::CommitResult
Result of a Commit.
Definition: Commit.h:110
ice_conversions.h
armarx::armem::base::MemoryBase::addCoreSegment
CoreSegmentT & addCoreSegment(const std::string &name, aron::type::ObjectPtr coreSegmentType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Add an empty core segment with the given name, type and prediction engines.
Definition: MemoryBase.h:259
armarx::armem::server::ltm::Memory::forEachCoreSegment
bool forEachCoreSegment(std::function< void(CoreSegment &)> func) const final
iterate over all core segments of this ltm
Definition: Memory.cpp:82
armarx::armem::server::MemoryToIceAdapter::getRecordStatus
dto::RecordStatusResult getRecordStatus()
Definition: MemoryToIceAdapter.cpp:444
armarx::armem::base::detail::MemoryItem::id
MemoryID & id()
Definition: MemoryItem.h:27
armarx::armem::server::wm::CoreSegment::doLocked
auto doLocked(FunctionT &&function) const
Definition: memory_definitions.h:112
armarx::armem::server::ltm::util::mongodb::detail::update
bool update(mongocxx::collection &coll, const nlohmann::json &query, const nlohmann::json &update)
Definition: mongodb.cpp:67
armarx::armem::EntityUpdateResult::snapshotID
MemoryID snapshotID
Definition: Commit.h:76
armarx::armem::server::ltm::detail::MemoryBase::startRecording
void startRecording()
enable/disable
Definition: MemoryBase.h:210
MemoryToIceAdapter.h
armarx::armem::server::MemoryToIceAdapter::getAvailableEngines
prediction::data::EngineSupportMap getAvailableEngines()
Definition: MemoryToIceAdapter.cpp:484
ice_conversions.h
armarx::armem::server::MemoryToIceAdapter::stopRecord
dto::StopRecordResult stopRecord()
Definition: MemoryToIceAdapter.cpp:416
armarx::fromIce
void fromIce(const std::map< IceKeyT, IceValueT > &iceMap, boost::container::flat_map< CppKeyT, CppValueT > &cppMap)
Definition: ice_conversions_boost_templates.h:26
armarx::armem::MemoryID::memoryName
std::string memoryName
Definition: MemoryID.h:50
armarx::armem::server
Definition: GraspMemory.cpp:19
armarx::armem::server::MemoryToIceAdapter::directlyStore
dto::DirectlyStoreResult directlyStore(const dto::DirectlyStoreInput &directlStoreInput)
Definition: MemoryToIceAdapter.cpp:387
ExpressionException.h
armarx::armem::server::wm::CoreSegment
base::CoreSegmentBase
Definition: memory_definitions.h:86
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::server::MemoryToIceAdapter::addSegment
data::AddSegmentResult addSegment(const data::AddSegmentInput &input, bool addCoreSegments=false)
Definition: MemoryToIceAdapter.cpp:38
Exception.h
armarx::armem::server::ltm::detail::MemoryItem::id
MemoryID id() const
Definition: MemoryItem.cpp:37
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::armem::server::ltm::detail::MemoryBase::loadAllReferences
armem::wm::Memory loadAllReferences()
return the full ltm as a wm::Memory with only references the ltm may be huge, use with caution
Definition: MemoryBase.h:119
armarx::armem::CommitResult::results
std::vector< EntityUpdateResult > results
Definition: Commit.h:112
armarx::armem::server::MemoryToIceAdapter::addSegments
data::AddSegmentsResult addSegments(const data::AddSegmentsInput &input, bool addCoreSegments=false)
Definition: MemoryToIceAdapter.cpp:98
armarx::armem::server::MemoryToIceAdapter::MemoryToIceAdapter
MemoryToIceAdapter(server::wm::Memory *workingMemory=nullptr, server::ltm::Memory *longtermMemory=nullptr)
Construct an MemoryToIceAdapter from an existing Memory.
Definition: MemoryToIceAdapter.cpp:24
armarx::armem::query::DataMode::NoData
@ NoData
Just get the structure, but no ARON data.
Builder.h
armarx::armem::base::MemoryBase::append
void append(const OtherDerivedT &other)
Merge another memory into this one.
Definition: MemoryBase.h:347
armarx::armem::EntityUpdateResult::errorMessage
std::string errorMessage
Definition: Commit.h:79
armarx::armem::client::query::Builder
The query::Builder class provides a fluent-style specification of hierarchical queries.
Definition: Builder.h:22
ice_conversions_templates.h
armarx::armem::server::wm::detail::PredictionContainer::dispatchPredictions
std::vector< PredictionResult > dispatchPredictions(const std::vector< PredictionRequest > &requests)
Definition: Prediction.h:169
armarx::armem::base::MemoryBase::update
std::vector< UpdateResult > update(const Commit &commit, const bool addMissingCoreSegmentDuringUpdate=false, const bool checkMemoryName=true)
Store all updates in commit.
Definition: MemoryBase.h:297
armarx::armem::error::ContainerEntryAlreadyExists
Indicates that a name in a given ID does not match a container's own name.
Definition: ArMemError.h:57
Logging.h
armarx::armem::client::query::Builder::all
void all()
Get all snapshots from all entities in all segments.
Definition: Builder.cpp:49
armarx::armem::server::wm::CoreSegment::addProviderSegment
ProviderSegment & addProviderSegment(const std::string &name, Args... args)
Definition: memory_definitions.h:101
armarx::armem::server::wm::Memory::updateLocking
std::vector< Base::UpdateResult > updateLocking(const Commit &commit)
Perform the commit, locking the core segments.
Definition: memory_definitions.cpp:50
armarx::armem::client::QueryResult::fromIce
static QueryResult fromIce(const armem::query::data::Result &ice)
Definition: Query.cpp:25
armarx::armem::EntityUpdateResult::success
bool success
Definition: Commit.h:74
armarx::armem::server::MemoryToIceAdapter::commitLocking
data::CommitResult commitLocking(const data::Commit &commitIce, Time timeArrived)
Definition: MemoryToIceAdapter.cpp:163
armarx::armem::server::MemoryToIceAdapter::commit
data::CommitResult commit(const data::Commit &commitIce, Time timeArrived)
Definition: MemoryToIceAdapter.cpp:112
ice_conversions.h
armarx::armem::error::MissingEntry
Indicates that a container did not have an entry under a given name.
Definition: ArMemError.h:74
armarx::armem::server::MemoryToIceAdapter::query
query::data::Result query(const armem::query::data::Input &input)
Definition: MemoryToIceAdapter.cpp:288
armarx::armem::server::ltm::detail::MemoryBase::store
void store(const armem::wm::Memory &memory)
append a wm::Memory instance to the ltm
Definition: MemoryBase.h:164
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin::directlyStore
void directlyStore(const armem::wm::Memory &memory)
Definition: BufferedMemoryMixin.h:29
armarx::armem::server::ltm::detail::MemoryItem::name
std::string name() const
Definition: MemoryItem.cpp:43
armarx::human::MemoryID
const armem::MemoryID MemoryID
Definition: memory_ids.cpp:29