Writer.cpp
Go to the documentation of this file.
1 #include "Writer.h"
2 
3 #include <mutex>
4 #include <string>
5 #include <unordered_map>
6 
10 
14 
17 
19 {
20  bool
21  Writer::store(const std::unordered_map<core::StackLayer, aron::data::DictPtr>& stack,
22  const std::string& clientID,
24  {
25  ARMARX_CHECK(not stack.empty());
26 
27  armem::Commit commit;
28 
29  for (const auto& [layer, data] : stack)
30  {
31  const std::string layerName = core::StackLayerNames.to_name(layer);
32 
34  update.entityID = armem::MemoryID()
36  .withCoreSegmentName(properties().coreSegmentName)
37  .withProviderSegmentName(clientID)
38  .withEntityName(layerName)
40  update.referencedTime = timestamp;
41  update.instancesData = {data};
42  commit.add(update);
43  }
44 
45  std::lock_guard g{writeMutex};
46  armem::CommitResult updateResult = memoryWriter().commit(commit);
47 
48  ARMARX_DEBUG << updateResult;
49 
50  if (not updateResult.allSuccess())
51  {
52  ARMARX_ERROR << updateResult.allErrorMessages();
53  }
54  return updateResult.allSuccess();
55  }
56 
57  std::string
59  {
60  return "mem.nav.param.";
61  }
62 
65  {
66  return Properties{
69  .providerName = "" // clientId
70  };
71  }
72 
73 } // namespace armarx::navigation::memory::client::param
armarx::armem::MemoryID::withMemoryName
MemoryID withMemoryName(const std::string &name) const
Definition: MemoryID.cpp:401
armarx::armem::Commit
A bundle of updates to be sent to the memory.
Definition: Commit.h:89
armarx::navigation::memory::client::param
This file is part of ArmarX.
Definition: Reader.cpp:7
MemoryID.h
DateTime.h
armarx::navigation::memory::client::param::Writer::propertyPrefix
std::string propertyPrefix() const override
Definition: Writer.cpp:58
armarx::armem::client::util::SimpleWriterBase::Properties
Definition: SimpleWriterBase.h:47
armarx::navigation::memory::client::param::Writer::store
bool store(const std::unordered_map< core::StackLayer, aron::data::DictPtr > &stack, const std::string &clientID, const armarx::core::time::DateTime &timestamp)
Definition: Writer.cpp:21
armarx::navigation::memory::constants::NavigationMemoryName
const std::string NavigationMemoryName
Definition: constants.h:29
constants.h
Dict.h
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
armarx::armem::MemoryID::withProviderSegmentName
MemoryID withProviderSegmentName(const std::string &name) const
Definition: MemoryID.cpp:417
armarx::armem::client::util::SimpleWriterBase::memoryWriter
armem::client::Writer & memoryWriter()
Definition: SimpleWriterBase.cpp:52
armarx::navigation::core::StackLayerNames
const simox::meta::EnumNames< StackLayer > StackLayerNames
Definition: constants.h:44
armarx::armem::MemoryID::withCoreSegmentName
MemoryID withCoreSegmentName(const std::string &name) const
Definition: MemoryID.cpp:409
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:184
armarx::armem::client::util::SimpleWriterBase::Properties::memoryName
std::string memoryName
Definition: SimpleWriterBase.h:49
armarx::armem::EntityUpdate
An update of an entity for a specific point in time.
Definition: Commit.h:25
armarx::armem::CommitResult
Result of a Commit.
Definition: Commit.h:110
armarx::armem::client::Writer::commit
CommitResult commit(const Commit &commit) const
Writes a Commit to the memory.
Definition: Writer.cpp:59
Writer.h
timestamp
std::string timestamp()
Definition: CartographerAdapter.cpp:85
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:196
armarx::armem::server::ltm::util::mongodb::detail::update
bool update(mongocxx::collection &coll, const nlohmann::json &query, const nlohmann::json &update)
Definition: mongodb.cpp:68
ExpressionException.h
Commit.h
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::MemoryID::withEntityName
MemoryID withEntityName(const std::string &name) const
Definition: MemoryID.cpp:425
armarx::armem::Commit::add
EntityUpdate & add()
Definition: Commit.cpp:80
armarx::armem::laser_scans::constants::memoryName
const std::string memoryName
Definition: constants.h:28
armarx::navigation::memory::client::param::Writer::defaultProperties
Properties defaultProperties() const override
Definition: Writer.cpp:64
armarx::armem::client::util::SimpleWriterBase::properties
const Properties & properties() const
Definition: SimpleWriterBase.cpp:58
armarx::armem::MemoryID::withTimestamp
MemoryID withTimestamp(Time time) const
Definition: MemoryID.cpp:433
armarx::navigation::memory::constants::ParameterizationCoreSegmentName
const std::string ParameterizationCoreSegmentName
Definition: constants.h:32
constants.h
Logging.h
armarx::human::MemoryID
const armem::MemoryID MemoryID
Definition: memory_ids.cpp:28