OpenRTM-aist  2.1.0
OutPortProvider.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTC_OUTPORTPROVIDER_H
21 #define RTC_OUTPORTPROVIDER_H
22 
23 #include <coil/Factory.h>
24 #include <rtm/BufferBase.h>
25 #include <rtm/NVUtil.h>
26 #include <rtm/SystemLogger.h>
27 #include <rtm/DataPortStatus.h>
28 #include <rtm/OutPortConnector.h>
29 
30 #include <string>
31 
32 namespace RTC
33 {
34  class ConnectorListeners;
190  {
191  public:
205  virtual ~OutPortProvider();
206 
234  virtual void init(coil::Properties& prop);
235 
261  virtual void setBuffer(CdrBufferBase* buffer) = 0;
262 
293  virtual void setListener(ConnectorInfo& info,
294  ConnectorListenersBase* listeners) = 0;
295 
320  virtual void setConnector(OutPortConnector* connector) = 0;
321 
345  virtual void publishInterfaceProfile(SDOPackage::NVList& prop);
346 
374  virtual bool publishInterface(SDOPackage::NVList& prop);
375 
376  protected:
394  void setPortType(const char* port_type);
395 
413  void setDataType(const char* data_type);
414 
432  void setInterfaceType(const char* interface_type);
433 
451  void setDataFlowType(const char* dataflow_type);
452 
470  void setSubscriptionType(const char* subs_type);
471 
472  protected:
480  SDOPackage::NVList m_properties;
488  mutable Logger rtclog;
489 
490  private:
491  std::string m_portType;
492  std::string m_dataType;
493  std::string m_interfaceType;
494  std::string m_dataflowType;
495  std::string m_subscriptionType;
496 
497 
498  public:
507  {
508  explicit publishInterfaceProfileFunc(SDOPackage::NVList& prop)
509  : m_prop(prop) {}
510  void operator()(OutPortProvider* provider)
511  {
512  provider->publishInterfaceProfile(m_prop);
513  }
514  SDOPackage::NVList& m_prop;
515  };
516 
525  {
526  explicit publishInterfaceFunc(SDOPackage::NVList& prop)
527  : m_prop(prop), provider_(nullptr) {}
528  void operator()(OutPortProvider* provider)
529  {
530  if (provider->publishInterface(m_prop))
531  {
532  provider_ = provider;
533  }
534  }
535  SDOPackage::NVList& m_prop;
537  };
538  };
539 
547  using OutPortProviderFactory = ::coil::GlobalFactory<OutPortProvider>;
548 } // namespace RTC
549 
550 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
551 EXTERN template class DLL_PLUGIN coil::GlobalFactory<RTC::OutPortProvider>;
552 #elif defined(__GNUC__)
553 EXTERN template class coil::GlobalFactory<RTC::OutPortProvider>;
554 #endif
555 
556 #endif // RTC_OUTPORTPROVIDER_H
Buffer abstract class.
DataPortStatus class.
NameValue and NVList utility functions.
OutPortConnector class.
RT component logger class.
BufferBase abstract class.
Definition: BufferBase.h:106
ConnectorInfo class.
Definition: ConnectorBase.h:50
Definition: ConnectorListener.h:1354
Logger class.
Definition: SystemLogger.h:101
OutPortConnector base class.
Definition: OutPortConnector.h:58
OutPortProvider.
Definition: OutPortProvider.h:190
SDOPackage::NVList m_properties
Properties to hold the port profiles.
Definition: OutPortProvider.h:480
Logger rtclog
Logger stream.
Definition: OutPortProvider.h:488
void setDataFlowType(const char *dataflow_type)
Set the data flow type.
virtual bool publishInterface(SDOPackage::NVList &prop)
Publish interface information.
void setPortType(const char *port_type)
Set the port type.
virtual void publishInterfaceProfile(SDOPackage::NVList &prop)
Publish InterfaceProfile information.
virtual void setListener(ConnectorInfo &info, ConnectorListenersBase *listeners)=0
Set the listener.
void setSubscriptionType(const char *subs_type)
Set the subscription type.
void setDataType(const char *data_type)
Set the data type.
virtual void init(coil::Properties &prop)
Initializing configuration.
virtual void setConnector(OutPortConnector *connector)=0
set Connector
void setInterfaceType(const char *interface_type)
Set the interface type.
virtual void setBuffer(CdrBufferBase *buffer)=0
Setting outside buffer's pointer.
virtual ~OutPortProvider()
Destructor.
RT-Component.
coil::Properties Properties
Definition: RTC.h:72
::coil::GlobalFactory< OutPortProvider > OutPortProviderFactory
OutPortProviderFactory type definition.
Definition: OutPortProvider.h:547
Functor to publish interface profile.
Definition: OutPortProvider.h:525
OutPortProvider * provider_
Definition: OutPortProvider.h:536
void operator()(OutPortProvider *provider)
Definition: OutPortProvider.h:528
publishInterfaceFunc(SDOPackage::NVList &prop)
Definition: OutPortProvider.h:526
SDOPackage::NVList & m_prop
Definition: OutPortProvider.h:535
Functor to publish interface profile.
Definition: OutPortProvider.h:507
SDOPackage::NVList & m_prop
Definition: OutPortProvider.h:514
publishInterfaceProfileFunc(SDOPackage::NVList &prop)
Definition: OutPortProvider.h:508
void operator()(OutPortProvider *provider)
Definition: OutPortProvider.h:510