OpenRTM-aist  1.2.1
InPortProvider.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTC_INPORTPROVIDER_H
21 #define RTC_INPORTPROVIDER_H
22 
23 #include <string>
24 
25 #include <coil/Factory.h>
26 
27 #include <rtm/BufferBase.h>
28 #include <rtm/NVUtil.h>
29 #include <rtm/SystemLogger.h>
30 #include <rtm/DataPortStatus.h>
31 #include <rtm/InPortConnector.h>
32 
33 namespace RTC
34 {
35  class ConnectorListeners;
36  class ConnectorInfo;
37 
191  : public DataPortStatus
192  {
193  public:
208  InPortProvider();
209 
223  virtual ~InPortProvider(void);
224 
252  virtual void init(coil::Properties& prop) = 0;
253 
279  virtual void setBuffer(BufferBase<cdrMemoryStream>* buffer) = 0;
280 
311  virtual void setListener(ConnectorInfo& info,
312  ConnectorListeners* listeners) = 0;
313 
338  virtual void setConnector(InPortConnector* connector) = 0;
339 
363  virtual void publishInterfaceProfile(SDOPackage::NVList& properties);
364 
392  virtual bool publishInterface(SDOPackage::NVList& properties);
393 
394  protected:
412  void setInterfaceType(const char* interface_type);
413 
431  void setDataFlowType(const char* dataflow_type);
432 
450  void setSubscriptionType(const char* subs_type);
451 
452 
453  protected:
461  SDOPackage::NVList m_properties;
462 
470  mutable Logger rtclog;
471 
472  private:
473  std::string m_interfaceType;
474  std::string m_dataflowType;
475  std::string m_subscriptionType;
476 
477  public:
478  // functors
487  {
488  publishInterfaceProfileFunc(SDOPackage::NVList& prop) : m_prop(prop) {}
489  void operator()(InPortProvider* provider)
490  {
491  provider->publishInterfaceProfile(m_prop);
492  }
493  SDOPackage::NVList& m_prop;
494  };
495 
504  {
505  publishInterfaceFunc(SDOPackage::NVList& prop)
506  : m_prop(prop), provider_(0) {}
507  void operator()(InPortProvider* provider)
508  {
509  if (provider->publishInterface(m_prop))
510  {
511  provider_ = provider;
512  }
513  }
514  SDOPackage::NVList& m_prop;
515  InPortProvider* provider_;
516  };
517 
518 
519  };
520 
528  typedef ::coil::GlobalFactory<InPortProvider> InPortProviderFactory;
529 
530 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
531  EXTERN template class DLL_PLUGIN ::coil::GlobalFactory<InPortProvider>;
532 #endif
533 }; // namespace RTC
534 
535 #ifdef __GNUC__
537 #endif
538 
539 #endif // RTC_INPORTPROVIDER_H
ConnectorListeners class.
Definition: ConnectorListener.h:1217
InPortProvider * provider_
Definition: InPortProvider.h:515
InPortConnector base class.
Definition: InPortConnector.h:51
#define DATAPORTSTATUS_ENUM
Importing RTC::DataPortStatus macro.
Definition: DataPortStatus.h:233
virtual void setBuffer(BufferBase< cdrMemoryStream > *buffer)=0
Setting outside buffer&#39;s pointer.
DataPortStatus class.
RT-Component.
Functor to publish interface profile.
Definition: InPortProvider.h:503
void operator()(InPortProvider *provider)
Definition: InPortProvider.h:507
SDOPackage::NVList & m_prop
Definition: InPortProvider.h:493
SDOPackage::NVList m_properties
Properties to hold port profile.
Definition: InPortProvider.h:461
publishInterfaceProfileFunc(SDOPackage::NVList &prop)
Definition: InPortProvider.h:488
RT component logger class.
Definition: ConnectorBase.h:43
InPortProvider.
Definition: InPortProvider.h:190
publishInterfaceFunc(SDOPackage::NVList &prop)
Definition: InPortProvider.h:505
Singleton template class.
Definition: Singleton.h:106
InPortConnector base class.
Buffer abstract class.
void operator()(InPortProvider *provider)
Definition: InPortProvider.h:489
NameValue and NVList utility functions.
virtual void setConnector(InPortConnector *connector)=0
set Connector
void setDataFlowType(const char *dataflow_type)
Set the dataflow type.
virtual void init(coil::Properties &prop)=0
Initializing configuration.
Logger class.
Definition: SystemLogger.h:99
void setInterfaceType(const char *interface_type)
Set the interface type.
#define EXTERN
Definition: Factory.h:42
Class represents a set of properties.
Definition: Properties.h:101
Functor to publish interface profile.
Definition: InPortProvider.h:486
virtual ~InPortProvider(void)
Destructor.
Logger rtclog
Logger stream.
Definition: InPortProvider.h:470
::coil::GlobalFactory< InPortProvider > InPortProviderFactory
InPortProviderFactory type definition.
Definition: InPortProvider.h:528
DataPortStatus mixin class.
Definition: DataPortStatus.h:54
DATAPORTSTATUS_ENUM InPortProvider()
Constructor.
BufferBase abstract class.
Definition: BufferBase.h:104
virtual bool publishInterface(SDOPackage::NVList &properties)
Publish interface information.
virtual void publishInterfaceProfile(SDOPackage::NVList &properties)
Publish InterfaceProfile information.
void setSubscriptionType(const char *subs_type)
Set the subscription type.
SDOPackage::NVList & m_prop
Definition: InPortProvider.h:514
virtual void setListener(ConnectorInfo &info, ConnectorListeners *listeners)=0
Set the listener.