00001 // -*- C++ -*- 00020 #ifndef RTC_LOCAL_IPORTSERVICE_H 00021 #define RTC_LOCAL_IPORTSERVICE_H 00022 00023 #include <vector> 00024 #include <rtc/IRTC.h> 00025 00026 namespace RTC 00027 { 00028 namespace Local 00029 { 00030 00031 struct PortInterfaceProfile 00032 { 00033 char* instance_name; 00034 char* type_name; 00035 PortPolarity polarity; 00036 }; 00037 00038 typedef std::vector<PortInterfaceProfile*> PortInterfaceProfileList; 00039 class IPortService; 00040 typedef std::vector<IPortService*> PortServiceList; 00041 00042 struct ConnectorProfile 00043 { 00044 char* name; 00045 UniqueIdentifier connector_id; 00046 PortServiceList ports; 00047 NVList properties; 00048 }; 00049 00050 typedef std::vector<ConnectorProfile*> ConnectorProfileList; 00051 class RTObject; 00052 00053 struct PortProfile 00054 { 00055 char* name; 00056 PortInterfaceProfileList interfaces; 00057 IPortService* port_ref; 00058 ConnectorProfileList connector_profiles; 00059 RTObject* owner; 00060 NVList properties; 00061 }; 00062 00063 typedef std::vector<PortProfile*> PortProfileList; 00064 00074 class IPortService 00075 { 00076 public: 00077 virtual ~IPortService() {}; 00078 virtual PortProfile& get_port_profile() const = 0; 00079 virtual ConnectorProfileList& get_connector_profiles() const = 0; 00080 virtual ConnectorProfile& 00081 get_connector_profile(const UniqueIdentifier connector_id) const = 0; 00082 virtual ReturnCode_t connect(ConnectorProfile& connector_profile) = 0; 00083 virtual ReturnCode_t disconnect(const UniqueIdentifier connector_id) = 0; 00084 virtual ReturnCode_t 00085 notify_connect(ConnectorProfile& connector_profile) = 0; 00086 virtual ReturnCode_t 00087 notify_disconnect(const UniqueIdentifier connector_id) = 0; 00088 virtual ReturnCode_t disconnect_all() = 0; 00089 }; 00090 }; // namespace Local 00091 }; // namespace RTC 00092 #endif // RTC_LOCAL_IPORTSERVICE_H 00093