00001
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef DataInPort_h
00048 #define DataInPort_h
00049
00050 #include <rtm/PortBase.h>
00051 #include <rtm/BufferBase.h>
00052 #include <rtm/InPortCorbaProvider.h>
00053 #include <rtm/OutPortCorbaConsumer.h>
00054 #include <rtm/NVUtil.h>
00055 #include <rtm/InPort.h>
00056 #include <stdio.h>
00057
00058 namespace RTC
00059 {
00070 class DataInPort
00071 : public virtual PortBase
00072 {
00073
00074 public:
00075 template <class DataType, template <class DataType> class Buffer>
00076 DataInPort(const char* name, InPort<DataType, Buffer>& inport)
00077 : PortBase(name)
00078 {
00079
00080 addProperty("port.port_type", "DataInPort");
00081
00082 m_providers.push_back(new InPortCorbaProvider<DataType>(inport));
00083 m_providers.back()->publishInterfaceProfile(m_profile.properties);
00084 m_consumers.push_back(new OutPortCorbaConsumer<DataType>(inport));
00085 m_dummy.push_back(1);
00086 }
00087
00088 virtual ~DataInPort();
00089
00090 protected:
00091 virtual ReturnCode_t
00092 publishInterfaces(ConnectorProfile& connector_profile);
00093
00094 virtual ReturnCode_t
00095 subscribeInterfaces(const ConnectorProfile& connector_profile);
00096
00097 virtual void
00098 unsubscribeInterfaces(const ConnectorProfile& connector_profile);
00099
00100 struct publish;
00101 struct subscribe;
00102 struct unsubscribe;
00103
00104 private:
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 std::vector<int> m_dummy;
00121 std::vector<InPortProvider*> m_providers;
00122 std::vector<OutPortConsumer*> m_consumers;
00123 };
00124 };
00125
00126 #endif // DataInPort_h