diff --git a/source/RobotAPI/libraries/armem/server/CMakeLists.txt b/source/RobotAPI/libraries/armem/server/CMakeLists.txt index 45b4dbc7222bf4483597314b7cc7c587c134a84b..782e86c28c7355a79ed47ca483ac9deb538782d0 100644 --- a/source/RobotAPI/libraries/armem/server/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem/server/CMakeLists.txt @@ -47,8 +47,8 @@ set(LIB_FILES ltm/base/extractor/Extractor.cpp ltm/base/extractor/imageExtractor/ImageExtractor.cpp - ltm/base/extractor/noExtractor/NoExtractor.cpp + ltm/base/converter/Converter.cpp ltm/base/converter/dict/Converter.cpp ltm/base/converter/dict/json/JsonConverter.cpp ltm/base/converter/dict/bson/BsonConverter.cpp @@ -119,8 +119,8 @@ set(LIB_HEADERS ltm/base/extractor/Extractor.h ltm/base/extractor/imageExtractor/ImageExtractor.h - ltm/base/extractor/noExtractor/NoExtractor.h + ltm/base/converter/Converter.h ltm/base/converter/dict/Converter.h ltm/base/converter/dict/json/JsonConverter.h ltm/base/converter/dict/bson/BsonConverter.h diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fd719807eb069bcf62db065ed42bb649c38d225d --- /dev/null +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.cpp @@ -0,0 +1 @@ +#include "Converter.h" diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.h new file mode 100644 index 0000000000000000000000000000000000000000..1e01564f3289a39018862aa24b379e4d2e16ecba --- /dev/null +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/Converter.h @@ -0,0 +1,32 @@ +#pragma once + +// STD/STL +#include <memory> + +// ArmarX +#include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> + +namespace armarx::armem::server::ltm +{ + class Converter + { + public: + enum class ConverterType + { + Str, + Binary + }; + + Converter(const ConverterType t, const std::string& s): + type(t), + suffix(s) + {} + virtual ~Converter() = default; + + virtual std::vector<unsigned char> convert(const aron::data::VariantPtr& data) = 0; + virtual aron::data::VariantPtr convert(const std::vector<unsigned char>& data) = 0; + + const ConverterType type; + const std::string suffix; + }; +} diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.cpp index fd719807eb069bcf62db065ed42bb649c38d225d..ea89e7dbc8e04fb69cea10558d0777237730872d 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.cpp @@ -1 +1,18 @@ #include "Converter.h" + +namespace armarx::armem::server::ltm +{ + + std::vector<unsigned char> DictConverter::convert(const aron::data::VariantPtr& data) + { + auto d = aron::data::Dict::DynamicCastAndCheck(data); + return _convert(d); + } + + aron::data::VariantPtr DictConverter::convert(const std::vector<unsigned char>& data) + { + auto d = _convert(data); + return d; + } + +} diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.h index 776b7c05ca15ba98c7350977c1fb4762e8e0a949..d2965ce0e61f74ff77458e6f770c20b928976f10 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/Converter.h @@ -3,33 +3,26 @@ // STD/STL #include <memory> +// BaseClass +#include "../Converter.h" + // ArmarX #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> namespace armarx::armem::server::ltm { - class DictConverter; - using DictConverterPtr = std::shared_ptr<DictConverter>; - - class DictConverter + class DictConverter : public Converter { public: - enum class ConverterType - { - Str, - Binary - }; + using Converter::Converter; - DictConverter(const ConverterType t, const std::string& s): - type(t), - suffix(s) - {} virtual ~DictConverter() = default; - virtual std::vector<unsigned char> convert(const aron::data::DictPtr& data) = 0; - virtual aron::data::DictPtr convert(const std::vector<unsigned char>& data) = 0; + std::vector<unsigned char> convert(const aron::data::VariantPtr& data) final; + aron::data::VariantPtr convert(const std::vector<unsigned char>& data) final; - const ConverterType type; - const std::string suffix; + protected: + virtual std::vector<unsigned char> _convert(const aron::data::DictPtr& data) = 0; + virtual aron::data::DictPtr _convert(const std::vector<unsigned char>& data) = 0; }; } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.cpp index e78913abd351657aaa73c852f7e336acd1c3c7f1..f183f002f53d586e0529e2e5b56372737c88cba3 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.cpp @@ -10,7 +10,7 @@ namespace armarx::armem::server::ltm::converter::dict namespace bsoncxxbuilder = bsoncxx::builder::stream; namespace bsoncxxdoc = bsoncxx::document; - std::vector<unsigned char> BsonConverter::convert(const aron::data::DictPtr& data) + std::vector<unsigned char> BsonConverter::_convert(const aron::data::DictPtr& data) { std::vector<unsigned char> jsonVec = jsonConverter.convert(data); std::string json(jsonVec.begin(), jsonVec.end()); @@ -24,12 +24,13 @@ namespace armarx::armem::server::ltm::converter::dict return bson; } - aron::data::DictPtr BsonConverter::convert(const std::vector<unsigned char>& data) + aron::data::DictPtr BsonConverter::_convert(const std::vector<unsigned char>& data) { bsoncxx::document::view view(data.data(), data.size()); nlohmann::json json = bsoncxx::to_json(view); std::string str = json.dump(2); std::vector<unsigned char> jsonVec(str.begin(), str.end()); - return jsonConverter.convert(jsonVec); + auto v = jsonConverter.convert(jsonVec); + return aron::data::Dict::DynamicCast(v); } } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.h index 0d6f858b0605edbe0496b279928b6cea6370e21c..e0021111043acc2141575574b084d6169524c551 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/bson/BsonConverter.h @@ -18,8 +18,9 @@ namespace armarx::armem::server::ltm::converter::dict DictConverter(ConverterType::Binary, ".bson") {} - virtual std::vector<unsigned char> convert(const aron::data::DictPtr& data) override; - virtual aron::data::DictPtr convert(const std::vector<unsigned char>& data) override; + protected: + std::vector<unsigned char> _convert(const aron::data::DictPtr& data) final; + aron::data::DictPtr _convert(const std::vector<unsigned char>& data) final; private: JsonConverter jsonConverter; diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.cpp index 379caf9b76c45a997e7700a039290abe08726fd7..1847b87529851b0c41cc0a94f957f55c38306189 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.cpp @@ -4,14 +4,14 @@ namespace armarx::armem::server::ltm::converter::dict { - std::vector<unsigned char> JsonConverter::convert(const aron::data::DictPtr& data) + std::vector<unsigned char> JsonConverter::_convert(const aron::data::DictPtr& data) { nlohmann::json j = aron::converter::AronNlohmannJSONConverter::ConvertToNlohmannJSON(data); auto str = j.dump(2); return std::vector<unsigned char>(str.begin(), str.end()); } - aron::data::DictPtr JsonConverter::convert(const std::vector<unsigned char>& data) + aron::data::DictPtr JsonConverter::_convert(const std::vector<unsigned char>& data) { std::string str(data.begin(), data.end()); nlohmann::json j = nlohmann::json::parse(str); diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.h index fad44583f452740684724e45e47f74138c63697c..8ef4cbc279c0c4034a5d8d874f42bae445d9a8b6 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/dict/json/JsonConverter.h @@ -8,9 +8,6 @@ namespace armarx::armem::server::ltm::converter::dict { - class JsonConverter; - using JsonConverterPtr = std::shared_ptr<JsonConverter>; - class JsonConverter : public DictConverter { public: @@ -18,7 +15,8 @@ namespace armarx::armem::server::ltm::converter::dict DictConverter(ConverterType::Str, ".json") {} - virtual std::vector<unsigned char> convert(const aron::data::DictPtr& data) override; - virtual aron::data::DictPtr convert(const std::vector<unsigned char>& data) override; + protected: + std::vector<unsigned char> _convert(const aron::data::DictPtr& data) final; + aron::data::DictPtr _convert(const std::vector<unsigned char>& data) final; }; } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.cpp index fd719807eb069bcf62db065ed42bb649c38d225d..a36db667d18750b64847ceed420a2b7d7e5480b3 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.cpp @@ -1 +1,18 @@ #include "Converter.h" + +namespace armarx::armem::server::ltm +{ + + std::vector<unsigned char> ImageConverter::convert(const aron::data::VariantPtr& data) + { + auto d = aron::data::NDArray::DynamicCastAndCheck(data); + return _convert(d); + } + + aron::data::VariantPtr ImageConverter::convert(const std::vector<unsigned char>& data) + { + auto d = _convert(data); + return d; + } + +} diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h index 740757ef84d98aa38ab1c2d65ab9e881bc215090..0dd01ad8466143e040f013c8380e2600ed3e1c5e 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h @@ -3,33 +3,26 @@ // STD/STL #include <memory> +// BaseClass +#include "../Converter.h" + // ArmarX #include <RobotAPI/libraries/aron/core/data/variant/complex/NDArray.h> namespace armarx::armem::server::ltm { - class ImageConverter; - using ImageConverterPtr = std::shared_ptr<ImageConverter>; - - class ImageConverter + class ImageConverter : public Converter { public: - enum class ConverterType - { - Str, - Binary - }; + using Converter::Converter; - ImageConverter(const ConverterType t, const std::string& s): - type(t), - suffix(s) - {} virtual ~ImageConverter() = default; - virtual std::vector<unsigned char> convert(const aron::data::NDArrayPtr& data) = 0; - virtual aron::data::NDArrayPtr convert(const std::vector<unsigned char>& data) = 0; + std::vector<unsigned char> convert(const aron::data::VariantPtr& data) final; + aron::data::VariantPtr convert(const std::vector<unsigned char>& data) final; - const ConverterType type; - const std::string suffix; + protected: + virtual std::vector<unsigned char> _convert(const aron::data::NDArrayPtr& data) = 0; + virtual aron::data::NDArrayPtr _convert(const std::vector<unsigned char>& data) = 0; }; } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.cpp index 3658def03e62aff1fed98e21272c82fe31636ab5..f2ab4d8db1f0baaf2a2c6524e97e9f17054b88cc 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.cpp +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.cpp @@ -10,7 +10,7 @@ namespace armarx::armem::server::ltm::converter::image { - std::vector<unsigned char> PngConverter::convert(const aron::data::NDArrayPtr& data) + std::vector<unsigned char> PngConverter::_convert(const aron::data::NDArrayPtr& data) { ARMARX_CHECK_NOT_NULL(data); @@ -20,10 +20,9 @@ namespace armarx::armem::server::ltm::converter::image return buffer; } - aron::data::NDArrayPtr PngConverter::convert(const std::vector<unsigned char>& data) + aron::data::NDArrayPtr PngConverter::_convert(const std::vector<unsigned char>& data) { cv::Mat img = cv::imdecode(data, cv::IMREAD_COLOR); - auto aron = aron::converter::AronOpenCVConverter::ConvertFromMat(img); - return aron; + return aron::converter::AronOpenCVConverter::ConvertFromMat(img); } } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.h index 13581518a38a05a4ff1a2caaa8ddf7e25a8383af..9aa35b6ae2834ec7a57a099c5af1c559a3419d99 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/png/PngConverter.h @@ -15,7 +15,8 @@ namespace armarx::armem::server::ltm::converter::image ImageConverter(ConverterType::Str, ".png") {} - virtual std::vector<unsigned char> convert(const aron::data::NDArrayPtr& data) override; - virtual aron::data::NDArrayPtr convert(const std::vector<unsigned char>& data) override; + protected: + std::vector<unsigned char> _convert(const aron::data::NDArrayPtr& data) final; + aron::data::NDArrayPtr _convert(const std::vector<unsigned char>& data) final; }; } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/detail/BufferedMemoryBase.h b/source/RobotAPI/libraries/armem/server/ltm/base/detail/BufferedMemoryBase.h index 29f57896b60082c871de07b9cf07efa8e7b57db0..025664c2f50ce4f23ead1396646b4c6ddb2e5ab6 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/detail/BufferedMemoryBase.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/detail/BufferedMemoryBase.h @@ -13,49 +13,56 @@ namespace armarx::armem::server::ltm public: BufferedMemoryBase() : - Base() + BufferedMemoryBase({}) { } BufferedMemoryBase(const MemoryID& id) : - Base(id), - buffer(id) + Base(id) { + buffer = std::make_shared<armem::wm::Memory>(id); + to_store = std::make_shared<armem::wm::Memory>(id); } virtual ~BufferedMemoryBase() = default; armem::wm::Memory getBuffer() const { - return buffer; + std::lock_guard l(bufferMutex); + return *buffer; } void directlyStore(const armem::wm::Memory& memory) { TIMING_START(LTM_Memory_DirectlyStore); - if (!this->pipeline.memFreqFilter->accept(memory)) + for (auto& f : this->memoryFilters) { - ARMARX_WARNING << deactivateSpam() << "Ignoring to put a Memory into the LTM because it got filtered."; - return; - } - else - { - _directlyStore(memory); + if (!f.accept(memory)) + { + ARMARX_WARNING << deactivateSpam() << "Ignoring to put a Memory into the LTM because it got filtered."; + return; + } } + _directlyStore(memory); TIMING_END(LTM_Memory_DirectlyStore); } void storeBuffer() { - std::lock_guard l(bufferMutex); - if (buffer.empty()) + std::lock_guard l(storeMutex); + { + std::lock_guard l(bufferMutex); + to_store = buffer; + buffer = std::make_shared<armem::wm::Memory>(this->id()); + } + + if (to_store->empty()) { ARMARX_INFO << deactivateSpam() << "Cannot store an empty buffer. Ignoring."; return; } - this->directlyStore(buffer); - buffer.clear(); + this->directlyStore(*to_store); } virtual void createPropertyDefinitions(PropertyDefinitionsPtr& defs, const std::string& prefix) override @@ -71,7 +78,9 @@ namespace armarx::armem::server::ltm void _store(const armem::wm::Memory& memory) override { std::lock_guard l(bufferMutex); - buffer.append(memory); + buffer->append(memory); + + // create task if not already exists if (!task) { int waitingTimeMs = 1000.f / storeFrequency; @@ -81,12 +90,12 @@ namespace armarx::armem::server::ltm } protected: - - /// Internal memory for data consolidated from wm to ltm (buffer) + /// Internal memory for data consolidated from wm to ltm (double-buffer) /// The to-put-to-ltm buffer (contains data in plain text) - /// This buffer may still be filtered. + /// This buffer may still be filtered (e.g. snapshot filters). /// This means that it is not guaranteed that all data in the buffer will be stored in the ltm - armem::wm::Memory buffer; + std::shared_ptr<armem::wm::Memory> buffer; + std::shared_ptr<armem::wm::Memory> to_store; /// The periodic'task to store the content of the buffer to the ltm typename armarx::PeriodicTask<BufferedMemoryBase>::pointer_type task = nullptr; @@ -95,7 +104,8 @@ namespace armarx::armem::server::ltm float storeFrequency = 10; /// a mutex to access the buffer object - std::mutex bufferMutex; + mutable std::mutex bufferMutex; + mutable std::mutex storeMutex; }; } // namespace armarx::armem::server::ltm diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/Extractor.h b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/Extractor.h index 6da8399303d0d1bda7681ec5e88c9e79625595c9..10647ccbe4708a09087673f172eb55ed67cdc68d 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/Extractor.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/Extractor.h @@ -9,9 +9,6 @@ namespace armarx::armem::server::ltm { - class Extractor; - typedef std::shared_ptr<Extractor> ExtractorPtr; - class Extractor { public: diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h index 901bebb8b87f16bb3fc0c425343e1b89d2f9b2be..08161d3fc8b81ccab7b927691686d59219454a07 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h @@ -7,9 +7,6 @@ namespace armarx::armem::server::ltm::extractor { - class ImageExtractor; - typedef std::shared_ptr<ImageExtractor> ImageExtractorPtr; - class ImageExtractorVisitor : public aron::data::RecursiveVariantVisitor { public: @@ -26,8 +23,5 @@ namespace armarx::armem::server::ltm::extractor virtual Extraction extract(aron::data::DictPtr& data) override; virtual aron::data::DictPtr merge(Extraction& encoding) override; - - public: - bool enabled; }; } diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.cpp deleted file mode 100644 index 58f36e588390296b73d0899520afc78c02e61b3a..0000000000000000000000000000000000000000 --- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "NoExtractor.h" - - -namespace armarx::armem::server::ltm::extractor -{ - Extractor::Extraction NoExtractor::extract(aron::data::DictPtr& data) - { - Extraction encoding; - encoding.dataWithoutExtraction = data; - return encoding; - } - - aron::data::DictPtr NoExtractor::merge(Extraction& encoding) - { - return encoding.dataWithoutExtraction; - } -} diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.h b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.h deleted file mode 100644 index fdcc6668471815f8a8c645e19a002adb60275beb..0000000000000000000000000000000000000000 --- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/noExtractor/NoExtractor.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -// Base Class -#include "../Extractor.h" - -namespace armarx::armem::server::ltm::extractor -{ - class NoExtractor; - typedef std::shared_ptr<NoExtractor> NoExtractorPtr; - - class NoExtractor : public Extractor - { - public: - NoExtractor() = default; - - virtual Extraction extract(aron::data::DictPtr& data) override; - virtual aron::data::DictPtr merge(Extraction& encoding) override; - }; -} diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h b/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h index f5b068600ac0bb1a89215d81861c2a7a0e10bc6f..6d64ca98c42ac2a014c6bff41f8d73ca927682c2 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/filter/Filter.h @@ -9,12 +9,6 @@ namespace armarx::armem::server::ltm { - class SnapshotFilter; - typedef std::shared_ptr<SnapshotFilter> SnapshotFilterPtr; - - class MemoryFilter; - typedef std::shared_ptr<MemoryFilter> MemoryFilterPtr; - class MemoryFilter { public: diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h index 2da5ea95712598ec7b78e7ca0342063473a89bf8..100ccf625e5d962bef40b73367145bf056d67ec6 100644 --- a/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h +++ b/source/RobotAPI/libraries/armem/server/ltm/base/filter/frequencyFilter/FrequencyFilter.h @@ -5,12 +5,6 @@ namespace armarx::armem::server::ltm::filter { - class SnapshotFrequencyFilter; - typedef std::shared_ptr<SnapshotFrequencyFilter> SnapshotFrequencyFilterPtr; - - class MemoryFrequencyFilter; - typedef std::shared_ptr<MemoryFrequencyFilter> MemoryFrequencyFilterPtr; - class MemoryFrequencyFilter : public MemoryFilter { @@ -35,9 +29,9 @@ namespace armarx::armem::server::ltm::filter virtual bool accept(const armem::wm::EntitySnapshot& e) override; public: - int waitingTimeInMs = 1000; + int waitingTimeInMs = -1; private: - std::unordered_map<MemoryID, long> timestampLastCommitInMs; + std::map<MemoryID, long> timestampLastCommitInMs; }; }