Handle.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef ORO_CORELIB_SIGNAL_HANDLE_HPP
00040 #define ORO_CORELIB_SIGNAL_HANDLE_HPP
00041
00042 #include "impl/signal_base.hpp"
00043
00044 namespace RTT
00045 {
00067 class Handle
00068 {
00069 private:
00070 typedef detail::signal_base sender_t;
00071 typedef sender_t::connection_t connection_t;
00072 public:
00076 Handle();
00077
00078 Handle(connection_t conn);
00079
00083 Handle(const Handle& hs);
00084
00088 ~Handle();
00089
00095 bool connect();
00096
00102 bool disconnect();
00103
00109 bool connected() const;
00110
00115 operator bool() const;
00116
00121 bool ready() const;
00122 protected:
00127 connection_t m_conn;
00128 };
00129
00134 class ScopedHandle
00135 :public Handle
00136 {
00137 ScopedHandle();
00138 public:
00139
00140 ScopedHandle(const Handle& hs);
00141
00145 ~ScopedHandle();
00146 };
00147
00153 class CleanupHandle
00154 :public Handle
00155 {
00156 CleanupHandle();
00157 public:
00158
00159 CleanupHandle(const Handle& hs);
00160
00165 ~CleanupHandle();
00166 };
00167 }
00168
00169 #if 0
00170 namespace RTT
00171 {
00172 class Handle
00173 {
00174 sigslot::handle _c;
00175 sigslot::handle _c2;
00176 public:
00177 Handle( const sigslot::handle & c,
00178 const sigslot::handle & c2 );
00179
00180 Handle( const sigslot::handle & c );
00181 Handle( const Handle& h );
00182 Handle();
00183 ~Handle();
00184
00188 sigslot::handle sighandle1() const { return _c; }
00189
00193 sigslot::handle sighandle2() const { return _c2; }
00194 #if 0
00195 Handle& operator=(const Handle& h);
00196
00197 bool operator==(const Handle& h) const;
00198
00199 bool operator<(const Handle& h) const;
00200
00201 operator sigslot::handle() const {
00202 return _c;
00203 }
00204 #endif
00205
00212 bool connected() const;
00213
00218 bool disconnect();
00219
00224 bool connect();
00225
00230 operator bool() const;
00231
00236 bool ready() const;
00237 };
00238 }
00239 #endif
00240
00241 #endif