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/InPortTcpSockProvider.h>
00054 #include <rtm/OutPortCorbaConsumer.h>
00055 #include <rtm/NVUtil.h>
00056 #include <rtm/InPort.h>
00057 #include <stdio.h>
00058
00059 namespace RTC
00060 {
00071 class DataInPort
00072 : public virtual PortBase
00073 {
00074
00075 public:
00076 template <class DataType, template <class DataType> class Buffer>
00077 DataInPort(const char* name, InPort<DataType, Buffer>& inport,
00078 Properties& prop)
00079 : PortBase(name)
00080 {
00081
00082 addProperty("port.port_type", "DataInPort");
00083
00084
00085 m_providers.push_back(new InPortCorbaProvider<DataType>(inport));
00086 m_providers.back()->publishInterfaceProfile(m_profile.properties);
00087
00088
00089 m_providers.push_back(new InPortTcpSockProvider<DataType>(inport, prop));
00090 m_providers.back()->publishInterfaceProfile(m_profile.properties);
00091
00092
00093 m_consumers.push_back(new OutPortCorbaConsumer<DataType>(inport));
00094
00095
00096 m_dummy.push_back(1);
00097 }
00098
00099 virtual ~DataInPort();
00100
00101 protected:
00102 virtual ReturnCode_t
00103 publishInterfaces(ConnectorProfile& connector_profile);
00104
00105 virtual ReturnCode_t
00106 subscribeInterfaces(const ConnectorProfile& connector_profile);
00107
00108 virtual void
00109 unsubscribeInterfaces(const ConnectorProfile& connector_profile);
00110
00111 struct publish;
00112 struct subscribe;
00113 struct unsubscribe;
00114
00115 private:
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131 std::vector<int> m_dummy;
00132 std::vector<InPortProvider*> m_providers;
00133 std::vector<OutPortConsumer*> m_consumers;
00134 };
00135 };
00136
00137 #endif // DataInPort_h