Go to the documentation of this file.
7 #include <SimoxUtility/json.h>
17 template <
class _CoreSegmentT>
33 std::lock_guard l(storeMutex);
46 ARMARX_DEBUG <<
"Amount of ids in update: " << ids.size();
62 buffer->id() =
id.getMemoryID();
76 task->setDelayWarningTolerance(
94 std::lock_guard l(bufferMutex);
101 std::lock_guard l(storeMutex);
103 std::lock_guard l(bufferMutex);
114 while (
storeFlag.test_and_set(std::memory_order_acquire))
116 std::this_thread::yield();
119 storeFlag.clear(std::memory_order_release);
126 if (json.find(
"BufferedMemory.storeFrequency") != json.end())
129 ARMARX_INFO <<
"Setting store frequency from configuration json to "
141 bool simulatedVersion =
false) = 0;
146 std::lock_guard l(bufferMutex);
156 std::unique_ptr<armem::wm::Memory>
buffer;
168 mutable std::recursive_mutex bufferMutex;
169 mutable std::recursive_mutex storeMutex;
void setMixinMemoryID(const MemoryID &id)
#define TIMING_START(name)
std::unique_ptr< armem::wm::Memory > buffer
Internal memory for data consolidated from wm to ltm (double-buffer) The to-put-to-ltm buffer (contai...
std::atomic_flag storeFlag
armem::wm::Memory getBuffer() const
std::unique_ptr< armem::wm::Memory > to_store
#define ARMARX_CHECK_NOT_EMPTY(c)
virtual ~BufferedMemoryMixin()=default
Brief description of class memory.
#define TIMING_END_STREAM(name, os)
virtual void _directlyStore(const armem::wm::Memory &memory, bool simulatedVersion=false)=0
A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mong...
SpamFilterDataPtr deactivateSpam(SpamFilterDataPtr const &spamFilter, float deactivationDurationSec, const std::string &identifier, bool deactivate)
void addToBuffer(const armem::wm::Memory &memory)
Client-side working memory.
void directlyStore(const armem::wm::Memory &memory, bool simulatedVersion=false)
BufferedMemoryMixin(const MemoryID &id)
void directlyStore(const armem::server::wm::Memory &serverMemory, bool simulatedVersion=false)
void configureMixin(const nlohmann::json &json)
configuration
const std::string memoryName
void createPropertyDefinitions(PropertyDefinitionsPtr &defs, const std::string &prefix)
Commit toCommit(const ContainerT &container)
float storeFrequency
The frequency (Hz) to store data to the ltm.