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()
35 .withMemoryName(properties().memoryName)
36 .withCoreSegmentName(properties().coreSegmentName)
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
std::string timestamp()
MemoryID withProviderSegmentName(const std::string &name) const
Definition MemoryID.cpp:417
MemoryID withCoreSegmentName(const std::string &name) const
Definition MemoryID.cpp:409
MemoryID withMemoryName(const std::string &name) const
Definition MemoryID.cpp:401
MemoryID withEntityName(const std::string &name) const
Definition MemoryID.cpp:425
MemoryID withTimestamp(Time time) const
Definition MemoryID.cpp:433
CommitResult commit(const Commit &commit) const
Writes a Commit to the memory.
Definition Writer.cpp:68
Represents a point in time.
Definition DateTime.h:25
std::string propertyPrefix() const override
Definition Writer.cpp:58
Properties defaultProperties() const override
Definition Writer.cpp:64
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
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
Definition Logging.h:196
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
Definition Logging.h:184
const simox::meta::EnumNames< StackLayer > StackLayerNames
Definition constants.h:46
This file is part of ArmarX.
Definition Reader.cpp:8
constexpr const char * ParameterizationCoreSegmentName
Definition constants.h:32
constexpr const char * NavigationMemoryName
Definition constants.h:29
Result of a Commit.
Definition Commit.h:111
std::vector< std::string > allErrorMessages() const
Definition Commit.cpp:73
A bundle of updates to be sent to the memory.
Definition Commit.h:90
EntityUpdate & add()
Definition Commit.cpp:80
An update of an entity for a specific point in time.
Definition Commit.h:26