00001 00020 #ifndef RTC_CONNECTORBASE_H 00021 #define RTC_CONNECTORBASE_H 00022 00023 #include <coil/stringutil.h> 00024 #include <coil/Properties.h> 00025 00026 #include <rtm/RTC.h> 00027 #include <rtm/CdrBufferBase.h> 00028 #include <rtm/DataPortStatus.h> 00029 #include <rtm/SystemLogger.h> 00030 00031 namespace RTC 00032 { 00054 class ConnectorBase 00055 : public DataPortStatus 00056 { 00057 public: 00058 DATAPORTSTATUS_ENUM 00059 00079 struct Profile 00080 { 00081 Profile(const char* name_, const char* id_, 00082 coil::vstring ports_, coil::Properties properties_) 00083 : name(name_), id(id_) 00084 , ports(ports_), properties(properties_) 00085 { 00086 } 00087 std::string name; 00088 std::string id; 00089 coil::vstring ports; 00090 coil::Properties properties; 00091 }; 00092 00093 typedef std::vector<Profile> ProfileList; 00094 typedef std::vector<ConnectorBase*> ConnectorList; 00095 00103 virtual ~ConnectorBase(){}; 00104 00118 virtual const Profile& profile() = 0; 00119 00133 virtual const char* id() = 0; 00134 00148 virtual const char* name() = 0; 00149 00163 virtual ReturnCode disconnect() = 0; 00164 00178 virtual CdrBufferBase* getBuffer() = 0; 00179 00180 virtual void activate() = 0; 00181 virtual void deactivate() = 0; 00182 00183 private: 00184 // non-copyable class 00185 // ConnectorBase(const ConnectorBase& x); 00186 // ConnectorBase& operator=(const ConnectorBase& x); 00187 }; 00188 }; // namespace RTC 00189 00190 #endif // RTC_CONNECTORBASE_H