wm.h
Go to the documentation of this file.
1 #pragma once
2 
6 
7 #include "detail/CoreSegmentQueryProcessorBase.h"
8 #include "detail/EntityQueryProcessorBase.h"
9 #include "detail/MemoryQueryProcessorBase.h"
10 #include "detail/ProviderSegmentQueryProcessorBase.h"
11 
13 {
14 
16  {
17  public:
19 
20 
21  protected:
23  };
24 
25  template <class SourceEntityT>
27  public EntityQueryProcessorBase<SourceEntityT, armem::wm::Entity>,
28  public HasDataMode
29  {
30  protected:
33 
34 
35  public:
38  {
39  }
40 
41  using Base::process;
42 
43  protected:
44  void
46  const typename SourceEntityT::EntitySnapshotT& snapshot) const
47  {
48  bool withData = (dataMode == armem::query::DataMode::WithData);
49  if (withData)
50  {
51  Base::addResultSnapshot(result, snapshot);
52  }
53  else
54  {
55  // 1. access real data
56  snapshot.forEachInstance([](const server::wm::EntityInstance& i)
57  { i.metadata().access(); });
58 
59  // 2. create copy and remove data from copy
61  copy.forEachInstance([](server::wm::EntityInstance& i) { i.data() = nullptr; });
62  result.addSnapshot(std::move(copy));
63  }
64  }
65  };
66 } // namespace armarx::armem::server::query_proc::wm::detail
67 
69 {
70 
72 
74  public detail::ProviderSegmentQueryProcessorBase<armem::wm::ProviderSegment,
75  armem::wm::ProviderSegment,
76  EntityQueryProcessor>,
77  public detail::HasDataMode
78  {
79  protected:
85 
86 
87  public:
90 
91  using Base::process;
92  };
93 
95  public detail::CoreSegmentQueryProcessorBase<armem::wm::CoreSegment,
96  armem::wm::CoreSegment,
97  ProviderSegmentQueryProcessor>,
98  public detail::HasDataMode
99  {
100  protected:
106 
107 
108  public:
111 
112  using Base::process;
113  };
114 
116  public detail::MemoryQueryProcessorBase<armem::wm::Memory,
117  armem::wm::Memory,
118  CoreSegmentQueryProcessor>,
119  public detail::HasDataMode
120  {
121  protected:
127 
128 
129  public:
131 
132  using Base::process;
133  };
134 
135 } // namespace armarx::armem::server::query_proc::wm
136 
138 {
139 
141 
143  public wm::detail::ProviderSegmentQueryProcessorBase<server::wm::ProviderSegment,
144  armem::wm::ProviderSegment,
145  EntityQueryProcessor>,
147  {
148  protected:
154 
155  public:
158  };
159 
161  public wm::detail::CoreSegmentQueryProcessorBase<server::wm::CoreSegment,
162  armem::wm::CoreSegment,
163  ProviderSegmentQueryProcessor>,
165  {
166  protected:
172 
173 
174  public:
177 
178  using Base::process;
179 
180  /// Locks the core segment, then delegates back to `CoreSegmentQueryProcessorBase`.
181  void process(armem::wm::CoreSegment& result,
182  const armem::query::data::CoreSegmentQuery& query,
183  const CoreSegment& coreSegment) const override;
184  };
185 
187  public wm::detail::MemoryQueryProcessorBase<server::wm::Memory,
188  armem::wm::Memory,
189  CoreSegmentQueryProcessor>,
191  {
192  protected:
198 
199  public:
201 
202  using Base::process;
203  };
204 
205 } // namespace armarx::armem::server::query_proc::wm_server
armarx::armem::server::query_proc::wm::detail::ProviderSegmentQueryProcessorBase
Definition: ProviderSegmentQueryProcessorBase.h:9
armarx::armem::wm::ProviderSegment
Client-side working memory provider segment.
Definition: memory_definitions.h:105
armarx::armem::server::query_proc::wm::detail::EntityQueryProcessor
Definition: wm.h:26
armarx::armem::wm::EntityInstance
Client-side working entity instance.
Definition: memory_definitions.h:32
armarx::armem::server::query_proc::base::ProviderSegmentQueryProcessorBase< armem::wm::ProviderSegment, armem::wm::ProviderSegment, EntityQueryProcessor >::process
virtual void process(ResultProviderSegmentT &result, const armem::query::data::ProviderSegmentQuery &query, const ProviderSegmentT &providerSegment) const override
Definition: ProviderSegmentQueryProcessorBase.h:48
armarx::armem::query::DataMode::WithData
@ WithData
Get structure and ARON data.
armarx::armem::server::query_proc::wm::detail::MemoryQueryProcessorBase
Definition: MemoryQueryProcessorBase.h:9
armarx::armem::server::query_proc::wm_server::CoreSegmentQueryProcessor
Definition: wm.h:160
armarx::armem::server::query_proc::wm_server::MemoryQueryProcessor
Definition: wm.h:186
armarx::armem::server::query_proc::base::EntityQueryProcessorBase< SourceEntityT, armem::wm::Entity >::process
virtual void process(ResultEntityT &result, const armem::query::data::EntityQuery &query, const EntityT &entity) const override
Definition: EntityQueryProcessorBase.h:44
armarx::armem::server::wm::Entity
Definition: memory_definitions.h:27
armarx::armem::base::EntityBase::addSnapshot
EntitySnapshotT & addSnapshot(const Time &timestamp)
Add a snapshot at the given time.
Definition: EntityBase.h:629
memory_definitions.h
armarx::armem::server::query_proc::wm::detail::EntityQueryProcessorBase< SourceEntityT, armem::wm::Entity >::addResultSnapshot
void addResultSnapshot(ResultEntityT &result, const EntitySnapshotT &snapshot) const override
Definition: EntityQueryProcessorBase.h:32
armarx::armem::server::wm::Memory
Definition: memory_definitions.h:122
armarx::armem::server::query_proc::wm::CoreSegmentQueryProcessor
Definition: wm.h:94
armarx::armem::server::query_proc::base::MemoryQueryProcessorBase< armem::wm::Memory, armem::wm::Memory, CoreSegmentQueryProcessor >::process
ResultMemoryT process(const armem::query::data::Input &input, const MemoryT &memory) const
Definition: MemoryQueryProcessorBase.h:43
armarx::armem::query::DataMode
DataMode
Definition: DataMode.h:6
copy
Use of this software is granted under one of the following two to be chosen freely by the user Boost Software License Version Marcin Kalicinski Permission is hereby free of to any person or organization obtaining a copy of the software and accompanying documentation covered by this and transmit the and to prepare derivative works of the and to permit third parties to whom the Software is furnished to do all subject to the including the above license this restriction and the following must be included in all copies of the in whole or in and all derivative works of the unless such copies or derivative works are solely in the form of machine executable object code generated by a source language processor THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF FITNESS FOR A PARTICULAR TITLE AND NON INFRINGEMENT IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN TORT OR ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE The MIT Marcin Kalicinski Permission is hereby free of to any person obtaining a copy of this software and associated documentation to deal in the Software without including without limitation the rights to copy
Definition: license.txt:39
armarx::armem::server::query_proc::wm_server::CoreSegmentQueryProcessor::CoreSegmentQueryProcessor
CoreSegmentQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:44
armarx::armem::server::query_proc::wm_server::ProviderSegmentQueryProcessor::ProviderSegmentQueryProcessor
ProviderSegmentQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:39
armarx::armem::wm::CoreSegment
Client-side working memory core segment.
Definition: memory_definitions.h:119
armarx::armem::server::query_proc::wm::detail::EntityQueryProcessor::addResultSnapshot
void addResultSnapshot(armem::wm::Entity &result, const typename SourceEntityT::EntitySnapshotT &snapshot) const
Definition: wm.h:45
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
armarx::armem::server::query_proc::wm_server::MemoryQueryProcessor::MemoryQueryProcessor
MemoryQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:58
armarx::armem::server::query_proc::wm::detail::CoreSegmentQueryProcessorBase
Handles memory queries.
Definition: CoreSegmentQueryProcessorBase.h:12
armarx::armem::server::query_proc::wm::detail::CoreSegmentQueryProcessorBase< armem::wm::CoreSegment, armem::wm::CoreSegment, ProviderSegmentQueryProcessor >::process
virtual void process(ResultCoreSegmentT &result, const armem::query::data::CoreSegmentQuery &query, const CoreSegmentT &coreSegment) const override
Definition: CoreSegmentQueryProcessorBase.h:50
armarx::armem::wm::EntitySnapshot
Client-side working memory entity snapshot.
Definition: memory_definitions.h:80
armarx::armem::server::query_proc::wm::CoreSegmentQueryProcessor::CoreSegmentQueryProcessor
CoreSegmentQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:25
armarx::armem::server::wm::ProviderSegment
Definition: memory_definitions.h:52
armarx::armem::server::query_proc::wm::ProviderSegmentQueryProcessor
Definition: wm.h:73
memory_definitions.h
armarx::armem::server::query_proc::wm::ProviderSegmentQueryProcessor::ProviderSegmentQueryProcessor
ProviderSegmentQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:17
armarx::armem::server::query_proc::wm::detail::EntityQueryProcessorBase
Definition: EntityQueryProcessorBase.h:11
armarx::armem::server::query_proc::wm_server::ProviderSegmentQueryProcessor
Definition: wm.h:142
armarx::armem::server::wm::CoreSegment
base::CoreSegmentBase
Definition: memory_definitions.h:75
armarx::armem::server::query_proc::wm_server
Definition: wm.cpp:37
armarx::armem::server::query_proc::wm::detail::HasDataMode::dataMode
armem::query::DataMode dataMode
Definition: wm.h:22
armarx::armem::server::query_proc::wm
Definition: CoreSegmentQueryProcessorBase.cpp:3
armarx::armem::server::query_proc::wm::detail::EntityQueryProcessor::EntityQueryProcessor
EntityQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.h:36
armarx::armem::server::query_proc::wm::MemoryQueryProcessor::MemoryQueryProcessor
MemoryQueryProcessor(armem::query::DataMode dataMode=armem::query::DataMode::WithData)
Definition: wm.cpp:30
armarx::armem::wm::Entity
Client-side working memory entity.
Definition: memory_definitions.h:93
armarx::armem::base::EntityInstanceBase::metadata
MetadataT & metadata()
Definition: EntityInstanceBase.h:117
armarx::armem::base::EntityInstanceBase::data
const DataT & data() const
Definition: EntityInstanceBase.h:129
armarx::armem::server::query_proc::wm::detail
Definition: CoreSegmentQueryProcessorBase.cpp:3
armarx::armem::server::query_proc::wm::MemoryQueryProcessor
Definition: wm.h:115
armarx::armem::server::query_proc::wm::detail::HasDataMode::HasDataMode
HasDataMode(armem::query::DataMode dataMode)
Definition: wm.cpp:8
armarx::armem::server::query_proc::wm::detail::HasDataMode
Definition: wm.h:15
DataMode.h