OpenRTM-aist  2.1.0
InPortConsumer.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTC_INPORTCONSUMER_H
21 #define RTC_INPORTCONSUMER_H
22 
23 #include <coil/Factory.h>
24 #include <rtm/DataPortStatus.h>
25 #include <rtm/ByteData.h>
26 
27 namespace coil
28 {
29  class Properties;
30 } // namespace coil
31 
32 // Why RtORB does not allow forward declaration?
33 #if !defined ORB_IS_RTORB && !defined ORB_IS_ORBEXPRESS
34 namespace SDOPackage
35 {
36  class NVList;
37 } // namespace SDOPackage
38 #endif // ORB_IS_RTORB
39 
40 
41 
42 namespace RTC
43 {
78  {
79  public:
80 
94  virtual ~InPortConsumer() = default;
95 
110  virtual void init(coil::Properties& prop) = 0;
111 
146  virtual DataPortStatus put(ByteData& data) = 0;
147 
171  virtual void publishInterfaceProfile(SDOPackage::NVList& properties) = 0;
172 
196  virtual bool subscribeInterface(const SDOPackage::NVList& properties) = 0;
197 
215  virtual void unsubscribeInterface(const SDOPackage::NVList& properties) = 0;
216 
225  {
226  explicit publishInterfaceProfileFunc(SDOPackage::NVList& prop)
227  : m_prop(prop) {}
228  void operator()(InPortConsumer* consumer)
229  {
230  consumer->publishInterfaceProfile(m_prop);
231  }
232  SDOPackage::NVList& m_prop;
233  };
234 
243  {
244  explicit subscribeInterfaceFunc(SDOPackage::NVList& prop)
245  : m_prop(prop) {}
246  bool operator()(InPortConsumer* consumer)
247  {
248  return consumer->subscribeInterface(m_prop);
249  }
250  SDOPackage::NVList& m_prop;
251  };
252 
253 
254  };
255 
256  using InPortConsumerFactory = ::coil::GlobalFactory<InPortConsumer>;
257 } // namespace RTC
258 
259 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
260 EXTERN template class DLL_PLUGIN coil::GlobalFactory<RTC::InPortConsumer>;
261 #elif defined(__GNUC__)
262 EXTERN template class coil::GlobalFactory<RTC::InPortConsumer>;
263 #endif
264 
265 #endif // RTC_INPORTCONSUMER_H
DataPortStatus class.
DataPortStatus mixin class.
Definition: ConnectorListener.h:35
Definition: ByteData.h:30
InPortConsumer abstract class.
Definition: InPortConsumer.h:78
virtual ~InPortConsumer()=default
Destructor.
virtual void publishInterfaceProfile(SDOPackage::NVList &properties)=0
Publish InterfaceProfile information.
virtual void unsubscribeInterface(const SDOPackage::NVList &properties)=0
Unsubscribe the data send notification.
virtual bool subscribeInterface(const SDOPackage::NVList &properties)=0
Subscribe the data send notification.
virtual void init(coil::Properties &prop)=0
Initializing configuration.
virtual DataPortStatus put(ByteData &data)=0
Send data to the destination port.
RT-Component.
coil::Properties Properties
Definition: RTC.h:72
::coil::GlobalFactory< InPortConsumer > InPortConsumerFactory
Definition: InPortConsumer.h:256
SDO Package.
Definition: InPortConsumer.h:35
Definition: DefaultPeriodicTask.h:24
Functor to publish interface profile.
Definition: InPortConsumer.h:225
void operator()(InPortConsumer *consumer)
Definition: InPortConsumer.h:228
publishInterfaceProfileFunc(SDOPackage::NVList &prop)
Definition: InPortConsumer.h:226
SDOPackage::NVList & m_prop
Definition: InPortConsumer.h:232
Functor to publish interface profile.
Definition: InPortConsumer.h:243
SDOPackage::NVList & m_prop
Definition: InPortConsumer.h:250
bool operator()(InPortConsumer *consumer)
Definition: InPortConsumer.h:246
subscribeInterfaceFunc(SDOPackage::NVList &prop)
Definition: InPortConsumer.h:244