OutPortCorbaProvider.h

説明を見る。
00001 // -*- C++ -*-
00020 #ifndef OutPortCorbaProvider_h
00021 #define OutPortCorbaProvider_h
00022 
00023 #include <rtm/idl/DataPortSkel.h>
00024 #include <rtm/BufferBase.h>
00025 #include <rtm/OutPortProvider.h>
00026 
00027 namespace RTC
00028 {
00054   template <class DataType>
00055   class OutPortCorbaProvider
00056     : public OutPortProvider,
00057       public virtual POA_RTC::OutPortAny,
00058       public virtual PortableServer::RefCountServantBase
00059   {
00060   public:
00078     OutPortCorbaProvider(BufferBase<DataType>& buffer)
00079       : m_buffer(buffer)
00080     {
00081       CORBA::Any any_var;
00082       DataType   tmp_var;
00083       any_var <<= tmp_var;
00084       
00085       // PortProfile setting
00086       setDataType(any_var.type()->name());
00087       setInterfaceType("CORBA_Any");
00088       setDataFlowType("Push, Pull");
00089       setSubscriptionType("Flush, New, Periodic");
00090       
00091       // ConnectorProfile setting
00092       m_objref = this->_this();
00093       CORBA_SeqUtil::push_back(m_properties,
00094                                NVUtil::newNV("dataport.corba_any.outport_ref",
00095                                              m_objref));
00096     }
00097     
00111     virtual ~OutPortCorbaProvider()
00112     {}
00113     
00131     CORBA::Any* get()
00132     {
00133       DataType data;
00134       CORBA::Any_var tmp = new CORBA::Any();
00135       m_buffer.read(data);
00136       tmp <<= data;
00137       return tmp._retn();
00138     }
00139     
00140   private:
00141     BufferBase<DataType>& m_buffer;
00142     OutPortAny_var m_objref;
00143   };
00144 };     // namespace RTC
00145 #endif // OutPortCorbaProvider_h

OpenRTMに対してWed May 21 05:17:25 2008に生成されました。  doxygen 1.5.3