OpenRTM-aist  2.1.0
InPortProvider.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTC_INPORTPROVIDER_H
21 #define RTC_INPORTPROVIDER_H
22 
23 #include <coil/Factory.h>
24 
25 #include <rtm/BufferBase.h>
26 #include <rtm/NVUtil.h>
27 #include <rtm/SystemLogger.h>
28 #include <rtm/DataPortStatus.h>
29 #include <rtm/InPortConnector.h>
30 
31 #include <string>
32 
33 namespace RTC
34 {
35  class ConnectorListeners;
36  class ConnectorInfo;
37 
191  {
192  public:
207 
221  virtual ~InPortProvider();
222 
250  virtual void init(coil::Properties& prop) = 0;
251 
277  virtual void setBuffer(BufferBase<ByteData>* buffer) = 0;
278 
309  virtual void setListener(ConnectorInfo& info,
310  ConnectorListenersBase* listeners) = 0;
311 
336  virtual void setConnector(InPortConnector* connector) = 0;
337 
361  virtual void publishInterfaceProfile(SDOPackage::NVList& prop);
362 
390  virtual bool publishInterface(SDOPackage::NVList& prop);
391 
392  protected:
410  void setInterfaceType(const char* interface_type);
411 
429  void setDataFlowType(const char* dataflow_type);
430 
448  void setSubscriptionType(const char* subs_type);
449 
450 
451  protected:
459  SDOPackage::NVList m_properties;
460 
468  mutable Logger rtclog;
469 
470  private:
471  std::string m_interfaceType;
472  std::string m_dataflowType;
473  std::string m_subscriptionType;
474 
475  public:
476  // functors
485  {
486  explicit publishInterfaceProfileFunc(SDOPackage::NVList& prop)
487  : m_prop(prop) {}
488  void operator()(InPortProvider* provider)
489  {
490  provider->publishInterfaceProfile(m_prop);
491  }
492  SDOPackage::NVList& m_prop;
493  };
494 
503  {
504  explicit publishInterfaceFunc(SDOPackage::NVList& prop)
505  : m_prop(prop), provider_(nullptr) {}
506  void operator()(InPortProvider* provider)
507  {
508  if (provider->publishInterface(m_prop))
509  {
510  provider_ = provider;
511  }
512  }
513  SDOPackage::NVList& m_prop;
515  };
516 
517 
518  };
519 
527  using InPortProviderFactory = ::coil::GlobalFactory<InPortProvider>;
528 } // namespace RTC
529 
530 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
531 EXTERN template class DLL_PLUGIN coil::GlobalFactory<RTC::InPortProvider>;
532 #elif defined(__GNUC__)
533 EXTERN template class coil::GlobalFactory<RTC::InPortProvider>;
534 #endif
535 
536 #endif // RTC_INPORTPROVIDER_H
Buffer abstract class.
DataPortStatus class.
InPortConnector base class.
NameValue and NVList utility functions.
RT component logger class.
BufferBase abstract class.
Definition: BufferBase.h:106
ConnectorInfo class.
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
InPortConnector base class.
Definition: InPortConnector.h:54
InPortProvider.
Definition: InPortProvider.h:191
void setDataFlowType(const char *dataflow_type)
Set the dataflow type.
SDOPackage::NVList m_properties
Properties to hold port profile.
Definition: InPortProvider.h:459
virtual void setConnector(InPortConnector *connector)=0
set Connector
virtual void setBuffer(BufferBase< ByteData > *buffer)=0
Setting outside buffer's pointer.
void setInterfaceType(const char *interface_type)
Set the interface type.
virtual ~InPortProvider()
Destructor.
virtual void init(coil::Properties &prop)=0
Initializing configuration.
Logger rtclog
Logger stream.
Definition: InPortProvider.h:468
virtual bool publishInterface(SDOPackage::NVList &prop)
Publish interface information.
virtual void publishInterfaceProfile(SDOPackage::NVList &prop)
Publish InterfaceProfile information.
void setSubscriptionType(const char *subs_type)
Set the subscription type.
InPortProvider()
Constructor.
virtual void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners)=0
Set the listener.
Logger class.
Definition: SystemLogger.h:101
RT-Component.
coil::Properties Properties
Definition: RTC.h:72
::coil::GlobalFactory< InPortProvider > InPortProviderFactory
InPortProviderFactory type definition.
Definition: InPortProvider.h:527
Functor to publish interface profile.
Definition: InPortProvider.h:503
void operator()(InPortProvider *provider)
Definition: InPortProvider.h:506
publishInterfaceFunc(SDOPackage::NVList &prop)
Definition: InPortProvider.h:504
InPortProvider * provider_
Definition: InPortProvider.h:514
SDOPackage::NVList & m_prop
Definition: InPortProvider.h:513
Functor to publish interface profile.
Definition: InPortProvider.h:485
SDOPackage::NVList & m_prop
Definition: InPortProvider.h:492
publishInterfaceProfileFunc(SDOPackage::NVList &prop)
Definition: InPortProvider.h:486
void operator()(InPortProvider *provider)
Definition: InPortProvider.h:488