ReadWritePluginUser.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include <RobotAPI/interface/armem/server/MemoryInterface.h>
9 
10 
12 {
13 
14  class Plugin;
15 
16  /**
17  * @brief Base class of memory server components.
18  *
19  * Implements the server ice interfaces using the ice adapter of the plugin.
20  */
22  virtual public ManagedIceObject,
23  virtual public MemoryInterface,
25  {
26  public:
28  virtual ~ReadWritePluginUser() override;
29 
30 
31  void setMemoryName(const std::string& memoryName);
32 
33 
34  // WritingInterface interface
35  virtual data::AddSegmentsResult
36  addSegments(const data::AddSegmentsInput& input,
37  const Ice::Current& = Ice::emptyCurrent) override;
38  data::AddSegmentsResult addSegments(const data::AddSegmentsInput& input,
39  bool addCoreSegments);
40 
41  virtual data::CommitResult commit(const data::Commit& commit,
42  const Ice::Current& = Ice::emptyCurrent) override;
43 
44  /**
45  * Clears the working memory usings its clear feature.
46  */
47  virtual void clearWorkingMemory(const Ice::Current& = Ice::emptyCurrent) override;
48 
49  // ReadingInterface interface
50  virtual armem::query::data::Result query(const armem::query::data::Input& input,
51  const Ice::Current& = Ice::emptyCurrent) override;
52 
53  /**
54  * Queries only the LTMs of the memory server.
55  * @param storeIntoWM if set, the result is also stored into the working memory
56  * no matter how the recording mode is set.
57  */
58  virtual armem::query::data::Result queryLTM(const armem::query::data::Input& input,
59  bool storeIntoWM,
60  const Ice::Current& = Ice::emptyCurrent) override;
61 
62  virtual armem::structure::data::GetServerStructureResult
63  getServerStructure(const Ice::Current& = Ice::emptyCurrent) override;
64 
65 
66  // StoringInterface interface
67  virtual dto::DirectlyStoreResult
68  directlyStore(const dto::DirectlyStoreInput&,
69  const Ice::Current& = Ice::emptyCurrent) override;
70  virtual dto::StartRecordResult
71  startRecord(const dto::StartRecordInput& startRecordInput,
72  const Ice::Current& = Ice::emptyCurrent) override;
73  virtual dto::StopRecordResult stopRecord(const Ice::Current& = Ice::emptyCurrent) override;
74  virtual dto::RecordStatusResult
75  getRecordStatus(const Ice::Current& = Ice::emptyCurrent) override;
76 
77  // ActionsInterface interface
78  virtual armem::actions::GetActionsOutputSeq
79  getActions(const armem::actions::GetActionsInputSeq& inputs);
80  virtual armem::actions::ExecuteActionOutputSeq
81  executeActions(const armem::actions::ExecuteActionInputSeq& inputs);
82 
83  virtual armem::actions::GetActionsOutputSeq
84  getActions(const armem::actions::GetActionsInputSeq& inputs,
85  const ::Ice::Current&) override;
86  virtual armem::actions::ExecuteActionOutputSeq
87  executeActions(const armem::actions::ExecuteActionInputSeq& inputs,
88  const ::Ice::Current&) override;
89 
90  // PredictingInterface interface
91  virtual armem::prediction::data::PredictionResultSeq
92  predict(const armem::prediction::data::PredictionRequestSeq& requests);
93 
94  // Unless you need very unusual behavior from this method for your memory server,
95  // it is better to set the available prediction engines in the memory itself
96  // and let it handle the requests than to override this.
97  virtual armem::prediction::data::EngineSupportMap getAvailableEngines();
98 
99  virtual armem::prediction::data::PredictionResultSeq
100  predict(const armem::prediction::data::PredictionRequestSeq& requests,
101  const ::Ice::Current&) override;
102  virtual armem::prediction::data::EngineSupportMap
103  getAvailableEngines(const ::Ice::Current&) override;
104 
105  //ReloadFromLTMOnStartup
107 
108  /**
109  * Loads the data of the LTMs into the WM.
110  */
111  virtual void loadLTMintoWM(bool complete, const ::Ice::Current&) override;
112 
113  /**
114  * @brief Use a rest persistence strategy for storing the wm as ltm
115  * Uses a rest server as ltm sink.
116  *
117  * @param identifier unique strategy name
118  * @param exportName memory export name
119  * @param host name of the host where the rest server is running
120  * @param port network port at which the rest server is running
121  * @param overwritePrevStrategy if set the ltm only contains this new strategy, if false it will be appended to the other(s)
122  */
123  virtual void useRestPersistenceStrategy(const std::string& identifier, const std::string& exportName, const std::string& host, int port, bool overwritePrevStrategy, const ::Ice::Current&) override;
124 
125  /**
126  * @brief Use a disk persistence strategy for storing the wm as ltm
127  * Uses the disk as ltm sink.
128  *
129  * @param identifier unique strategy name
130  * @param exportName memory export name
131  * @param exportPath path where the export is stored on disk
132  * @param overwritePrevStrategy if set the ltm only contains this new strategy, if false it will be appended to the other(s)
133  */
134  virtual void useDiskPersistenceStrategy(const std::string& identifier, const std::string& exportName, const std::string& exportPath, bool overwritePrevStrategy, const ::Ice::Current&) override;
135 
136  /**
137  * @brief Use a mongodb persistence strategy for storing the wm as ltm
138  * Uses a mongodb as ltm sink.
139  *
140  * NOTE (TODO): Not implemented
141  */
142  virtual void useMongoDbPersistenceStrategy(const std::string& identifier, const std::string& exportName, bool overwritePrevStrategy, const ::Ice::Current&) override;
143 
144  public:
146 
149 
151 
152 
153  private:
154  plugins::Plugin* plugin = nullptr;
155  };
156 
157 } // namespace armarx::armem::server::plugins
158 
159 namespace armarx::armem::server
160 {
162 }
armarx::armem::server::plugins::ReadWritePluginUser::predict
virtual armem::prediction::data::PredictionResultSeq predict(const armem::prediction::data::PredictionRequestSeq &requests)
Definition: ReadWritePluginUser.cpp:175
armarx::armem::server::plugins::ReadWritePluginUser::directlyStore
virtual dto::DirectlyStoreResult directlyStore(const dto::DirectlyStoreInput &, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:93
armarx::armem::server::plugins::ReadWritePluginUser::query
virtual armem::query::data::Result query(const armem::query::data::Input &input, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:71
armarx::armem::server::MemoryToIceAdapter
Helps connecting a Memory server to the Ice interface.
Definition: MemoryToIceAdapter.h:19
armarx::armem::server::plugins::ReadWritePluginUser::getServerStructure
virtual armem::structure::data::GetServerStructureResult getServerStructure(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:85
armarx::armem::server::plugins::ReadWritePluginUser::ReadWritePluginUser
ReadWritePluginUser()
Definition: ReadWritePluginUser.cpp:19
armarx::armem::server::plugins::ReadWritePluginUser::stopRecord
virtual dto::StopRecordResult stopRecord(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:108
armarx::armem::server::plugins::ReadWritePluginUser::setMemoryName
void setMemoryName(const std::string &memoryName)
Definition: ReadWritePluginUser.cpp:29
armarx::armem::server::plugins::ReadWritePluginUser::getActions
virtual armem::actions::GetActionsOutputSeq getActions(const armem::actions::GetActionsInputSeq &inputs)
Definition: ReadWritePluginUser.cpp:154
armarx::armem::server::plugins::ReadWritePluginUser::workingMemory
server::wm::Memory & workingMemory()
Definition: ReadWritePluginUser.cpp:128
armarx::armem::server::plugins::ReadWritePluginUser::getAvailableEngines
virtual armem::prediction::data::EngineSupportMap getAvailableEngines()
Definition: ReadWritePluginUser.cpp:181
armarx::armem::server::ltm::Memory
A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mong...
Definition: Memory.h:20
armarx::armem::server::wm::Memory
Definition: memory_definitions.h:122
ManagedIceObject.h
armarx::armem::server::plugins::ReadWritePluginUser::addSegments
virtual data::AddSegmentsResult addSegments(const data::AddSegmentsInput &input, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:36
actions.h
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:12
armarx::armem::server::plugins::ReadWritePluginUser
Base class of memory server components.
Definition: ReadWritePluginUser.h:21
armarx::armem::CommitResult
Result of a Commit.
Definition: Commit.h:110
armarx::armem::server::plugins::ReadWritePluginUser::queryLTM
virtual armem::query::data::Result queryLTM(const armem::query::data::Input &input, bool storeIntoWM, const Ice::Current &=Ice::emptyCurrent) override
Queries only the LTMs of the memory server.
Definition: ReadWritePluginUser.cpp:78
armarx::armem::server::plugins::ReadWritePluginUser::iceAdapter
MemoryToIceAdapter & iceAdapter()
Definition: ReadWritePluginUser.cpp:134
armarx::armem::server::plugins::ReadWritePluginUser::useMongoDbPersistenceStrategy
virtual void useMongoDbPersistenceStrategy(const std::string &identifier, const std::string &exportName, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a mongodb persistence strategy for storing the wm as ltm Uses a mongodb as ltm sink.
Definition: ReadWritePluginUser.cpp:262
armarx::armem::server::plugins::ReadWritePluginUser::memoryServerPlugin
Plugin & memoryServerPlugin()
Definition: ReadWritePluginUser.cpp:122
armarx::armem::server::plugins::ReadWritePluginUser::~ReadWritePluginUser
virtual ~ReadWritePluginUser() override
Definition: ReadWritePluginUser.cpp:24
armarx::armem::server
Definition: GraspMemory.cpp:34
armarx::armem::server::plugins::ReadWritePluginUser::useDiskPersistenceStrategy
virtual void useDiskPersistenceStrategy(const std::string &identifier, const std::string &exportName, const std::string &exportPath, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a disk persistence strategy for storing the wm as ltm Uses the disk as ltm sink.
Definition: ReadWritePluginUser.cpp:236
armarx::armem::server::plugins::ReadWritePluginUser::commit
virtual data::CommitResult commit(const data::Commit &commit, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:52
armarx::armem::server::plugins::ReadWritePluginUser::reloadFromLTM
armem::CommitResult reloadFromLTM()
Definition: ReadWritePluginUser.cpp:200
armarx::armem::server::plugins::ReadWritePluginUser::executeActions
virtual armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq &inputs)
Definition: ReadWritePluginUser.cpp:168
armarx::ManagedIceObject
The ManagedIceObject is the base class for all ArmarX objects.
Definition: ManagedIceObject.h:162
forward_declarations.h
armarx::armem::server::plugins::ReadWritePluginUser::useRestPersistenceStrategy
virtual void useRestPersistenceStrategy(const std::string &identifier, const std::string &exportName, const std::string &host, int port, bool overwritePrevStrategy, const ::Ice::Current &) override
Use a rest persistence strategy for storing the wm as ltm Uses a rest server as ltm sink.
Definition: ReadWritePluginUser.cpp:208
armarx::armem::laser_scans::constants::memoryName
const std::string memoryName
Definition: constants.h:28
plugins::Plugin
armarx::armem::server::plugins::ReadWritePluginUser::longtermMemory
server::ltm::Memory & longtermMemory()
Definition: ReadWritePluginUser.cpp:140
armarx::armem::server::plugins
Definition: Plugin.cpp:17
armarx::armem::server::plugins::ReadWritePluginUser::startRecord
virtual dto::StartRecordResult startRecord(const dto::StartRecordInput &startRecordInput, const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:100
armarx::armem::server::plugins::Plugin
Definition: Plugin.h:26
armarx::armem::server::plugins::ReadWritePluginUser::clearWorkingMemory
virtual void clearWorkingMemory(const Ice::Current &=Ice::emptyCurrent) override
Clears the working memory usings its clear feature.
Definition: ReadWritePluginUser.cpp:58
armarx::armem::client::plugins::ListeningPluginUser
A memory name system client which listens to the memory updates topic (MemoryListenerInterface).
Definition: ListeningPluginUser.h:21
armarx::armem::server::plugins::ReadWritePluginUser::loadLTMintoWM
virtual void loadLTMintoWM(bool complete, const ::Ice::Current &) override
Loads the data of the LTMs into the WM.
Definition: ReadWritePluginUser.cpp:267
ListeningPluginUser.h
armarx::armem::server::plugins::ReadWritePluginUser::getRecordStatus
virtual dto::RecordStatusResult getRecordStatus(const Ice::Current &=Ice::emptyCurrent) override
Definition: ReadWritePluginUser.cpp:115