Connector.h
00001 #ifndef _CONNECTOR_H
00002 #define _CONNECTOR_H
00003
00004 #include <UniSetTypes.h>
00005 #include <UniversalInterface.h>
00006 #include <MessageType.h>
00007 #include <USignals.h>
00008 #include <sigc++/sigc++.h>
00009
00010 class CheckedSignal;
00011 class ConfirmSignal;
00012 class ConnectorRef;
00013 class CoreConnector;
00014
00022 class Connector
00023 {
00024 public:
00025 virtual ~Connector() {}
00026
00027
00028 virtual sigc::signal<void>& signal_connected() = 0;
00029 virtual sigc::signal<void>& signal_disconnected() = 0;
00030 virtual sigc::signal<void>& signal_startup() = 0;
00031 virtual sigc::signal<void, UniversalIO::UIOCommand>& signal_ask_sensors() = 0;
00032 virtual sigc::signal<void, UniSetTypes::SensorMessage*>& signal_sensor_info() = 0;
00034 virtual CheckedSignal& signal_checked() = 0;
00035 virtual ConfirmSignal& signal_confirm() = 0;
00036 virtual USignals::SigController& signals() = 0;
00038
00039 virtual bool connected() = 0;
00041 virtual UniversalInterface* get_uin() = 0;
00042 virtual UniSetTypes::ObjectId get_id() = 0;
00045 virtual void ask_sensor(const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node, const UniversalIO::UIOCommand cmd) = 0;
00047 virtual long get_value(const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node) = 0;
00049 virtual long get_value_from_gpm(const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node) = 0;
00051 virtual float get_analog_value(const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node) = 0;
00053 virtual void save_value(const long value, const UniSetTypes::ObjectId id, const UniSetTypes::ObjectId node) = 0;
00055 virtual Glib::ustring get_type() const = 0;
00057 virtual void send(UniSetTypes::ObjectId name, UniSetTypes::TransportMessage& msg) = 0;
00066 static ConnectorRef create_connector(const Glib::ustring& type, const Glib::ustring& manager_name
00067 ,const Glib::ustring& alive_sensor
00068 ,const Glib::ustring& confirm_sensor
00069 ,const Glib::ustring& auto_confirm_time_str);
00071 static void destroy_connector(ConnectorRef& connector);
00072 };
00073
00081 class ConnectorRef
00082 {
00083 public:
00084 ConnectorRef() : pointer_(NULL) {}
00085 ConnectorRef(const ConnectorRef& target);
00086 ConnectorRef(Connector* target);
00087 ConnectorRef& operator=(const ConnectorRef& target);
00088 Connector* operator->();
00089 bool operator==(const ConnectorRef& target) const;
00090 operator bool() const;
00091
00092 friend class Connector;
00093
00094 private:
00095 Connector* pointer_;
00096 };
00097
00098 inline ConnectorRef::ConnectorRef(const ConnectorRef& target)
00099 {
00100 if (this != &target)
00101 pointer_ = target.pointer_;
00102 }
00103
00104 inline ConnectorRef::ConnectorRef(Connector* target_ptr)
00105 {
00106 pointer_ = target_ptr;
00107 }
00108
00109 inline ConnectorRef&
00110 ConnectorRef::operator=(const ConnectorRef& target)
00111 {
00112 if (this != &target)
00113 pointer_ = target.pointer_;
00114 return *this;
00115 }
00116
00117 inline Connector*
00118 ConnectorRef::operator->()
00119 {
00120 return pointer_;
00121 }
00122
00123 inline bool
00124 ConnectorRef::operator==(const ConnectorRef& target) const
00125 {
00126 return (pointer_ == target.pointer_);
00127 }
00128
00129 inline
00130 ConnectorRef::operator bool() const
00131 {
00132 if (pointer_ != NULL)
00133 return true;
00134
00135 return false;
00136 }
00137
00138 #endif