ReaderWriterPlugin.h
Go to the documentation of this file.
1 
22 #pragma once
23 
24 #include <string>
25 
28 
30 #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h>
32 
33 
35 {
36 
44  template <typename T>
46  {
47  public:
48  ReaderWriterPlugin(ManagedIceObject& parent, const std::string pre) :
49  ComponentPlugin(parent, pre), readerWriter(memoryNameSystem())
50  {
51  if (not armemPlugin)
52  {
53  addPlugin(armemPlugin);
54  }
55  addPluginDependency(armemPlugin);
56  }
57 
58  ~ReaderWriterPlugin() override = default;
59 
60  void
62  {
63  readerWriter.registerPropertyDefinitions(properties);
64  }
65 
66  void
68  {
69  ARMARX_CHECK_NOT_NULL(armemPlugin);
70  if (not armemPlugin->isMemoryNameSystemEnabled())
71  {
72  ARMARX_INFO << "The memory name system is disabled by user choice via the property."
73  << "Reader and writer will not be able to connect to the memory.";
74  return;
75  }
76 
77  readerWriter.connect();
78  }
79 
80  bool
81  isAvailable() const
82  {
83  ARMARX_CHECK_NOT_NULL(armemPlugin);
84  return armemPlugin->isMemoryNameSystemEnabled();
85  }
86 
87  T&
88  get()
89  {
90  ARMARX_CHECK_NOT_NULL(armemPlugin);
92  return readerWriter;
93  }
94 
95  const T&
96  get() const
97  {
98  ARMARX_CHECK_NOT_NULL(armemPlugin);
100  return readerWriter;
101  }
102 
103  private:
105  memoryNameSystem()
106  {
107  if (armemPlugin == nullptr)
108  {
109  addPlugin(armemPlugin);
110  }
111 
112  ARMARX_CHECK_NOT_NULL(armemPlugin);
113  return armemPlugin->getMemoryNameSystemClient();
114  }
115 
116  armarx::armem::client::plugins::Plugin* armemPlugin = nullptr;
117 
118  T readerWriter;
119 
120  };
121 
122 } // namespace armarx::armem::client::plugins
armarx::armem::client::plugins::ReaderWriterPlugin::isAvailable
bool isAvailable() const
Definition: ReaderWriterPlugin.h:81
Plugin.h
armarx::ManagedIceObjectPlugin::addPluginDependency
void addPluginDependency(ManagedIceObjectPlugin *dependedOn)
Definition: ManagedIceObjectPlugin.cpp:42
armarx::armem::client::plugins::Plugin::isMemoryNameSystemEnabled
bool isMemoryNameSystemEnabled()
Indicate whether the Memory Name System (MNS) is enabled.
Definition: Plugin.cpp:69
armarx::armem::client::plugins::Plugin::getMemoryNameSystemClient
MemoryNameSystem & getMemoryNameSystemClient()
Get the MNS client.
Definition: Plugin.cpp:92
armarx::ManagedIceObjectPlugin::parent
ManagedIceObject & parent()
Definition: ManagedIceObjectPlugin.cpp:69
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
armarx::armem::client::plugins::ReaderWriterPlugin
A component plugin offering client-side access to a reader or writer and manages the lifecycle,...
Definition: ReaderWriterPlugin.h:45
armarx::armem::client::plugins::ReaderWriterPlugin::get
const T & get() const
Definition: ReaderWriterPlugin.h:96
armarx::armem::client::plugins::ReaderWriterPlugin::postCreatePropertyDefinitions
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
Definition: ReaderWriterPlugin.h:61
armarx::ManagedIceObjectPlugin::addPlugin
PluginT * addPlugin(const std::string prefix="", ParamsT &&...params)
Definition: ManagedIceObjectPlugin.h:104
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
armarx::armem::client::plugins::ReaderWriterPlugin::ReaderWriterPlugin
ReaderWriterPlugin(ManagedIceObject &parent, const std::string pre)
Definition: ReaderWriterPlugin.h:48
armarx::ComponentPlugin
Definition: ComponentPlugin.h:38
armarx::armem::client::plugins::ReaderWriterPlugin::preOnConnectComponent
void preOnConnectComponent() override
Definition: ReaderWriterPlugin.h:67
armarx::armem::client::plugins::ReaderWriterPlugin::get
T & get()
Definition: ReaderWriterPlugin.h:88
ExpressionException.h
armarx::ManagedIceObject
The ManagedIceObject is the base class for all ArmarX objects.
Definition: ManagedIceObject.h:163
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::armem::client::plugins
This file is part of ArmarX.
Definition: forward_declarations.h:24
armarx::armem::client::plugins::ReaderWriterPlugin::~ReaderWriterPlugin
~ReaderWriterPlugin() override=default
armarx::armem::client::MemoryNameSystem
The memory name system (MNS) client.
Definition: MemoryNameSystem.h:69
ComponentPlugin.h
MemoryNameSystem.h
T
float T
Definition: UnscentedKalmanFilterTest.cpp:35
armarx::armem::client::plugins::Plugin
A component plugin offering client-side access to to the working memory system by providing a Memory ...
Definition: Plugin.h:20