diff --git a/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.cpp b/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.cpp index ce437fd67bdd2ba3aa6ac9943093525db99a581e..34e2abd99c889d65723065c8b4726b2ea0aa9bd1 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.cpp @@ -1 +1,2 @@ #include "BaseQueryProcessorBase.h" + diff --git a/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.h b/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.h index f71aede29731259471cf5e8dd660917b3e848bb1..95943dd2f18289360336c22b910913835a84c604 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.h @@ -19,6 +19,9 @@ namespace armarx::armem::base::query_proc public: + virtual ~BaseQueryProcessorBase() = default; + + DataT process(const QueryT& query, const DataT& data, const query::data::QueryTargets& executeIf = {}) const { DataT result = data.copyEmpty(); diff --git a/source/RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h b/source/RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h index f8ab8c113e510e57a1ab2b53af6a06e60e393ce1..d334019c4ed70de05e56e6e0164a912741e0e772 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h @@ -1,17 +1,15 @@ #pragma once -#include <RobotAPI/interface/armem/query.h> - -#include "BaseQueryProcessorBase.h" -#include "ProviderSegmentQueryProcessorBase.h" - #include <regex> #include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h> +#include <RobotAPI/interface/armem/query.h> #include <RobotAPI/libraries/armem/core/error.h> +#include "BaseQueryProcessorBase.h" +#include "ProviderSegmentQueryProcessorBase.h" namespace armarx::armem::base::query_proc diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/BaseQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/BaseQueryProcessor.h index 99811dcc72d168dfecb0c5864f0760c4d5634a6e..708157ab602884f8fd35ee3d78019924fded2c4d 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/BaseQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/BaseQueryProcessor.h @@ -1,11 +1,9 @@ #pragma once -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> - #include <RobotAPI/interface/armem/query.h> #include <RobotAPI/libraries/armem/core/DataMode.h> -#include "../base/BaseQueryProcessorBase.h" +#include <RobotAPI/libraries/armem/server/query_proc/base/BaseQueryProcessorBase.h> namespace armarx::armem::wm::query_proc @@ -20,11 +18,14 @@ namespace armarx::armem::wm::query_proc using Base = base::query_proc::BaseQueryProcessorBase<DataT, QueryT>; public: + BaseQueryProcessor(DataMode dataMode = DataMode::WithData) : dataMode(dataMode) {} protected: + DataMode dataMode; + }; } diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp index afbe35ad15eea0342b0b0d4df0200aaf0d32aa2a..52efc9cc4930c9c50fb4b2fdc26986e4183ff3e4 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp @@ -1 +1,24 @@ #include "CoreSegmentQueryProcessor.h" + +#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> + + +namespace armarx::armem::wm::query_proc +{ + + CoreSegmentQueryProcessor::~CoreSegmentQueryProcessor() = default; + + data::CoreSegment CoreSegmentQueryProcessor::processToIce(const armem::query::data::CoreSegmentQuery& query, const wm::CoreSegment& coreSegment) const + { + data::CoreSegment data; + toIce(data, process(query, coreSegment)); + return data; + } + + ProviderSegment CoreSegmentQueryProcessor::providerSegmentProcessorProcess(const armem::query::data::ProviderSegmentQuerySeq& q, const ProviderSegmentT& s) const + { + return providerSegmentProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); + } + + +} diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h index 390ab66f656ece6010457f12f09917d9fca413f6..50387e5f1e8d7be59a1e7e2ce038610458420875 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h @@ -1,8 +1,11 @@ #pragma once -#include "BaseQueryProcessor.h" -#include "../base/CoreSegmentQueryProcessorBase.h" +#include <mutex> + +#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h> +#include "BaseQueryProcessor.h" #include "ProviderSegmentQueryProcessor.h" @@ -18,23 +21,24 @@ namespace armarx::armem::wm::query_proc using Base = BaseQueryProcessor<wm::CoreSegment, armem::query::data::CoreSegmentQuery>; public: + CoreSegmentQueryProcessor(DataMode dataMode = DataMode::WithData) : Base(dataMode), providerSegmentProcessor(dataMode) {} + virtual ~CoreSegmentQueryProcessor() override; using Base::process; - data::CoreSegment processToIce(const armem::query::data::CoreSegmentQuery& query, const wm::CoreSegment& coreSegment) const - { - return toIce<data::CoreSegment>(process(query, coreSegment)); - } + data::CoreSegment processToIce(const armem::query::data::CoreSegmentQuery& query, const wm::CoreSegment& coreSegment) const; + protected: - virtual ProviderSegmentT providerSegmentProcessorProcess(const armem::query::data::ProviderSegmentQuerySeq& q, const ProviderSegmentT& s) const override - { - return providerSegmentProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); - } + + virtual ProviderSegment providerSegmentProcessorProcess(const armem::query::data::ProviderSegmentQuerySeq& q, const ProviderSegmentT& s) const override; + private: + ProviderSegmentQueryProcessor providerSegmentProcessor; + }; } diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp index c1c321b026b173c6552758fb9d8b9fdf722ea5a4..001bedae13b13b671252c94540a127402d002465 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp @@ -1 +1,40 @@ #include "EntityQueryProcessor.h" + +#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> +#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> + + +namespace armarx::armem::wm::query_proc +{ + + EntityQueryProcessor::~EntityQueryProcessor() = default; + + + void EntityQueryProcessor::addResultSnapshot(wm::Entity& result, const wm::EntitySnapshot& snapshot) const + { + bool withData = (dataMode == DataMode::WithData); + if (withData) + { + result.addSnapshot(snapshot.copy()); + } + else + { + result.addSnapshot(snapshot.copyWithoutData()); + } + } + + + data::Entity EntityQueryProcessor::processToIce(const armem::query::data::EntityQuery& query, const wm::Entity& entity) const + { + data::Entity data; + toIce(data, process(query, entity)); + return data; + } + + + void EntityQueryProcessor::addResultSnapshot(wm::Entity& result, wm::Entity::ContainerT::const_iterator it) const + { + addResultSnapshot(result, it->second); + } + +} diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h index 94dc905e489be501257be508cff03c7efee8f8b8..34f66237e98d5c6f37fb2ea023ca4820b41c53e0 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h @@ -1,9 +1,10 @@ #pragma once +#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> +#include <RobotAPI/libraries/armem/server/query_proc/base/EntityQueryProcessorBase.h> + #include "BaseQueryProcessor.h" -#include "../base/EntityQueryProcessorBase.h" -#include "EntityQueryProcessor.h" namespace armarx::armem::wm::query_proc { @@ -17,33 +18,18 @@ namespace armarx::armem::wm::query_proc using Base = BaseQueryProcessor<wm::Entity, armem::query::data::EntityQuery>; public: + EntityQueryProcessor(DataMode dataMode = DataMode::WithData) : Base(dataMode) {} + virtual ~EntityQueryProcessor() override; - data::Entity processToIce(const armem::query::data::EntityQuery& query, const wm::Entity& entity) const - { - return toIce<data::Entity>(process(query, entity)); - } + data::Entity processToIce(const armem::query::data::EntityQuery& query, const wm::Entity& entity) const; private: - void addResultSnapshot(wm::Entity& result, wm::Entity::ContainerT::const_iterator it) const override - { - addResultSnapshot(result, it->second); - } - - void addResultSnapshot(wm::Entity& result, const wm::EntitySnapshot& snapshot) const override - { - bool withData = (dataMode == DataMode::WithData); - if (withData) - { - result.addSnapshot(snapshot.copy()); - } - else - { - result.addSnapshot(snapshot.copyWithoutData()); - } - } + + void addResultSnapshot(wm::Entity& result, wm::Entity::ContainerT::const_iterator it) const override; + void addResultSnapshot(wm::Entity& result, const wm::EntitySnapshot& snapshot) const override; }; diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.cpp index 69b04de6c9e623286a5bda836dddfdc8b551b64a..cb8d94789d2cccd67ecb715fda4913daebe655cc 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.cpp @@ -1 +1,10 @@ #include "MemoryQueryProcessor.h" + + +namespace armarx::armem::wm::query_proc +{ + CoreSegment MemoryQueryProcessor::coreSegmentProcessorProcess(const armem::query::data::CoreSegmentQuerySeq& q, const CoreSegmentT& s) const + { + return coreSegmentProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); + } +} diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h index 8284df202bbcf602e2433639fe85388ca13d75ff..674b9ede6b3bb795ae65b00bfc1d220d8f970ed7 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h @@ -1,10 +1,13 @@ #pragma once +#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/server/query_proc/base/MemoryQueryProcessorBase.h> + #include "BaseQueryProcessor.h" -#include "../base/MemoryQueryProcessorBase.h" #include "CoreSegmentQueryProcessor.h" + namespace armarx::armem::wm::query_proc { /** @@ -17,18 +20,20 @@ namespace armarx::armem::wm::query_proc using Base = BaseQueryProcessor<wm::Memory, armem::query::data::MemoryQuery>; public: + MemoryQueryProcessor(DataMode dataMode = DataMode::WithData) : Base(dataMode), coreSegmentProcessor(dataMode) {} + protected: - virtual CoreSegmentT coreSegmentProcessorProcess(const armem::query::data::CoreSegmentQuerySeq& q, const CoreSegmentT& s) const override - { - return coreSegmentProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); - } + + virtual CoreSegment coreSegmentProcessorProcess(const armem::query::data::CoreSegmentQuerySeq& q, const CoreSegment& s) const override; private: + CoreSegmentQueryProcessor coreSegmentProcessor; + }; } diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp index 9a2a4405001f0904b74fc6afcf96813eef0879cd..84189bf2ba08d706e623fb065de7063500312b86 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp @@ -1 +1,25 @@ #include "ProviderSegmentQueryProcessor.h" + +#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> + + +namespace armarx::armem::wm::query_proc +{ + + ProviderSegmentQueryProcessor::~ProviderSegmentQueryProcessor() = default; + + + data::ProviderSegment ProviderSegmentQueryProcessor::processToIce(const armem::query::data::ProviderSegmentQuery& query, const wm::ProviderSegment& providerSegment) const + { + data::ProviderSegment data; + toIce(data, process(query, providerSegment)); + return data; + } + + + Entity ProviderSegmentQueryProcessor::entityProcessorProcess(const armem::query::data::EntityQuerySeq& q, const Entity& s) const + { + return entityProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); + } + +} diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h index 468138d9e2bbd526db3632019beca6a5a29f8269..adb921d0211430e818b6aa5e6ce6e62a70acdad8 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h @@ -1,10 +1,12 @@ #pragma once -#include "BaseQueryProcessor.h" -#include "../base/ProviderSegmentQueryProcessorBase.h" +#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> +#include <RobotAPI/libraries/armem/server/query_proc/base/ProviderSegmentQueryProcessorBase.h> +#include "BaseQueryProcessor.h" #include "EntityQueryProcessor.h" + namespace armarx::armem::wm::query_proc { /** @@ -17,23 +19,24 @@ namespace armarx::armem::wm::query_proc using Base = BaseQueryProcessor<wm::ProviderSegment, armem::query::data::ProviderSegmentQuery>; public: + ProviderSegmentQueryProcessor(DataMode dataMode = DataMode::WithData) : Base(dataMode), entityProcessor(dataMode) {} + virtual ~ProviderSegmentQueryProcessor() override; + using Base::process; - data::ProviderSegment processToIce(const armem::query::data::ProviderSegmentQuery& query, const wm::ProviderSegment& providerSegment) const - { - return toIce<data::ProviderSegment>(process(query, providerSegment)); - } + data::ProviderSegment processToIce(const armem::query::data::ProviderSegmentQuery& query, const wm::ProviderSegment& providerSegment) const; + protected: - virtual EntityT entityProcessorProcess(const armem::query::data::EntityQuerySeq& q, const EntityT& s) const override - { - return entityProcessor.process(q, s, {armem::query::data::QueryTarget::WM}); - } + + virtual Entity entityProcessorProcess(const armem::query::data::EntityQuerySeq& q, const Entity& s) const override; private: + EntityQueryProcessor entityProcessor; + }; }