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