dbus-cxx logo

connection.h

Go to the documentation of this file.
00001 
00002 // -*- c++ -*-
00003 /* Do not edit! -- generated file */
00004 
00005 #ifndef __DBUSXX_CONNECTION_H
00006 #define __DBUSXX_CONNECTION_H
00007 
00008 #include <list>
00009 #include <deque>
00010 
00011 #include <dbus-cxx/pointer.h>
00012 #include <dbus-cxx/message.h>
00013 #include <dbus-cxx/returnmessage.h>
00014 #include <dbus-cxx/pendingcall.h>
00015 #include <dbus-cxx/watch.h>
00016 #include <dbus-cxx/timeout.h>
00017 #include <dbus-cxx/accumulators.h>
00018 #include <dbus-cxx/object.h>
00019 #include <dbus-cxx/objectproxy.h>
00020 #include <dbus-cxx/signal_proxy.h>
00021 #include <dbus-cxx/dbus_signal.h>
00022 #include <dbus-cxx/messagefilter.h>
00023 #include <dbus-cxx/method.h>
00024 
00025 #include <iostream>
00026 
00027 namespace DBus
00028 {
00029 
00030   class Object;
00031   class signal_base;
00032   class PendingCall;
00033 
00043   class Connection
00044   {
00045     
00046     protected:
00047     
00048       // TODO dbus_connection_open
00049 
00050       Connection( DBusConnection* cobj = NULL, bool is_private=false );
00051 
00057       Connection( BusType type, bool is_private=false );
00058 
00059       Connection( const Connection& other );
00060 
00061     public:
00062       
00063       typedef DBusCxxPointer<Connection> pointer;
00064       
00065       typedef DBusCxxWeakPointer<Connection> weak_pointer;
00066 
00067       // TODO dbus_connection_open
00068 
00069       static pointer create( DBusConnection* cobj = NULL, bool is_private=false );
00070 
00076       static pointer create( BusType type, bool is_private=false );
00077 
00078       static pointer create( const Connection& other );
00079 
00080       virtual ~Connection();
00081 
00083       operator bool() const;
00084 
00086       bool is_valid() const;
00087 
00089       bool is_private() const;
00090 
00092       bool bus_register();
00093 
00095       bool is_registered() const;
00096 
00098       const char* unique_name() const;
00099 
00100       // TODO set_unique_name() 
00101 
00106       unsigned long unix_user( const std::string& name ) const;
00107 
00109       const char* bus_id() const;
00110 
00111       int request_name( const std::string& name, unsigned int flags = 0 );
00112 
00113       int release_name( const std::string& name );
00114 
00115       bool name_has_owner( const std::string& name ) const;
00116 
00117       StartReply start_service( const std::string& name, uint32_t flags ) const;
00118 
00119       bool add_match( const std::string& rule );
00120 
00121       void add_match_nonblocking( const std::string& rule );
00122 
00123       bool remove_match( const std::string& rule );
00124 
00125       void remove_match_nonblocking( const std::string& rule );
00126 
00127       // TODO dbus_connection_close 
00128 
00129       bool is_connected() const;
00130 
00131       bool is_authenticated() const;
00132 
00133       bool is_anonymous() const;
00134 
00135       const char* server_id() const;
00136 
00137       // TODO dbus_connection_preallocate_send
00138       // TODO dbus_connection_free_preallocated_send
00139       // TODO dbus_connection_send_preallocated
00140 
00141       uint32_t send( const Message::const_pointer );
00142 
00146       Connection& operator<<( Message::const_pointer msg );
00147 
00148       PendingCall::pointer send_with_reply_async( Message::const_pointer message, int timeout_milliseconds=-1 ) const;
00149 
00150       ReturnMessage::const_pointer send_with_reply_blocking( Message::const_pointer msg, int timeout_milliseconds=-1 ) const;
00151 
00152       void flush();
00153 
00154       bool read_write_dispatch( int timeout_milliseconds=-1 );
00155 
00156       bool read_write( int timeout_milliseconds=-1 );
00157 
00158       Message::pointer borrow_message();
00159 
00160       void return_message( Message::pointer message );
00161 
00162       void steal_borrowed_message( Message::pointer message );
00163 
00164       Message::pointer pop_message( );
00165 
00166       DispatchStatus dispatch_status( ) const;
00167 
00168       DispatchStatus dispatch( );
00169 
00170       int unix_fd() const;
00171 
00172       int socket() const;
00173 
00174       unsigned long unix_user() const;
00175 
00176       unsigned long unix_process_id() const;
00177 
00178       // TODO dbus_connection_get_adt_audit_session_data
00179 
00180       // TODO dbus_connection_set_unix_user_function
00181 
00182       // TODO dbus_connection_get_windows_user
00183 
00184       // TODO dbus_connection_set_windows_user_function
00185 
00186       void set_allow_anonymous( bool allow=true );
00187 
00188       void set_route_peer_messages( bool route=true );
00189 
00190       // TODO dbus_connection_try_register_object_path
00191       // TODO dbus_connection_register_object_path
00192       // TODO dbus_connection_try_register_fallback
00193       // TODO dbus_connection_register_fallback
00194       // TODO dbus_connection_unregister_object_path
00195       // TODO dbus_connection_get_object_path_data
00196       // TODO dbus_connection_list_registered
00197 
00198       void set_max_message_size( long size );
00199 
00200       long max_message_size();
00201 
00202       void set_max_received_size( long size );
00203 
00204       long max_received_size();
00205 
00206       long outgoing_size();
00207 
00208       bool has_messages_to_send();
00209 
00210       typedef sigc::signal1<bool,Watch::pointer,InterruptablePredicateAccumulatorDefaultFalse> AddWatchSignal;
00211 
00213       AddWatchSignal& signal_add_watch();
00214 
00215       sigc::signal<bool,Watch::pointer>& signal_remove_watch();
00216 
00217       sigc::signal<bool,Watch::pointer>& signal_watch_toggled();
00218 
00219       typedef sigc::signal1<bool,Timeout::pointer,InterruptablePredicateAccumulatorDefaultFalse> AddTimeoutSignal;
00220       
00222       AddTimeoutSignal& signal_add_timeout();
00223 
00224       sigc::signal<bool,Timeout::pointer>& signal_remove_timeout();
00225 
00226       sigc::signal<bool,Timeout::pointer>& signal_timeout_toggled();
00227 
00228       sigc::signal<void>& signal_wakeup_main();
00229 
00231       sigc::signal<void,DispatchStatus>& signal_dispatch_status_changed();
00232 
00237       FilterSignal& signal_filter();
00238 
00239       typedef std::deque<Watch::pointer> Watches;
00240       
00241       const Watches& unhandled_watches() const;
00242       
00243       void remove_unhandled_watch(const Watch::pointer w);
00244 
00245       Object::pointer create_object( const std::string& path, PrimaryFallback pf=PRIMARY );
00246 
00247       bool register_object( Object::pointer object );
00248 
00249       ObjectPathHandler::pointer create_object( const std::string& path, sigc::slot<HandlerResult,Connection::pointer,Message::const_pointer>& slot, PrimaryFallback pf=PRIMARY );
00250 
00251       ObjectPathHandler::pointer create_object( const std::string& path, HandlerResult (*MessageFunction)(Connection::pointer,Message::const_pointer), PrimaryFallback pf=PRIMARY );
00252 
00253       ObjectProxy::pointer create_object_proxy( const std::string& path );
00254 
00255       ObjectProxy::pointer create_object_proxy( const std::string& destination, const std::string& path );
00256 
00257       bool unregister_object( const std::string& path );
00258 
00264       signal_proxy_simple::pointer create_signal_proxy( const std::string& interface, const std::string& name );
00265 
00271       signal_proxy_simple::pointer create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name );
00272 
00273       template <class T_return>
00274       DBusCxxPointer<signal_proxy<T_return> > create_signal_proxy( const std::string& interface, const std::string& name )
00275       {
00276         DBusCxxPointer<signal_proxy<T_return> > sig;
00277         sig = signal_proxy<T_return>::create(interface, name);
00278         this->add_signal_proxy( sig );
00279         return sig;
00280       }
00281       
00282       template <class T_return, class T_arg1>
00283       DBusCxxPointer<signal_proxy<T_return, T_arg1> > create_signal_proxy( const std::string& interface, const std::string& name )
00284       {
00285         DBusCxxPointer<signal_proxy<T_return, T_arg1> > sig;
00286         sig = signal_proxy<T_return, T_arg1>::create(interface, name);
00287         this->add_signal_proxy( sig );
00288         return sig;
00289       }
00290       
00291       template <class T_return, class T_arg1,class T_arg2>
00292       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > create_signal_proxy( const std::string& interface, const std::string& name )
00293       {
00294         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > sig;
00295         sig = signal_proxy<T_return, T_arg1,T_arg2>::create(interface, name);
00296         this->add_signal_proxy( sig );
00297         return sig;
00298       }
00299       
00300       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00301       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > create_signal_proxy( const std::string& interface, const std::string& name )
00302       {
00303         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > sig;
00304         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3>::create(interface, name);
00305         this->add_signal_proxy( sig );
00306         return sig;
00307       }
00308       
00309       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00310       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal_proxy( const std::string& interface, const std::string& name )
00311       {
00312         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
00313         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(interface, name);
00314         this->add_signal_proxy( sig );
00315         return sig;
00316       }
00317       
00318       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00319       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal_proxy( const std::string& interface, const std::string& name )
00320       {
00321         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
00322         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(interface, name);
00323         this->add_signal_proxy( sig );
00324         return sig;
00325       }
00326       
00327       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00328       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal_proxy( const std::string& interface, const std::string& name )
00329       {
00330         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
00331         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(interface, name);
00332         this->add_signal_proxy( sig );
00333         return sig;
00334       }
00335       
00336       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00337       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal_proxy( const std::string& interface, const std::string& name )
00338       {
00339         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
00340         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(interface, name);
00341         this->add_signal_proxy( sig );
00342         return sig;
00343       }
00344       
00345 
00346       
00347       template <class T_return>
00348       DBusCxxPointer<signal_proxy<T_return> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00349       {
00350         DBusCxxPointer<signal_proxy<T_return> > sig;
00351         sig = signal_proxy<T_return>::create(path, interface, name);
00352         this->add_signal_proxy( sig );
00353         return sig;
00354       }
00355       
00356       template <class T_return, class T_arg1>
00357       DBusCxxPointer<signal_proxy<T_return, T_arg1> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00358       {
00359         DBusCxxPointer<signal_proxy<T_return, T_arg1> > sig;
00360         sig = signal_proxy<T_return, T_arg1>::create(path, interface, name);
00361         this->add_signal_proxy( sig );
00362         return sig;
00363       }
00364       
00365       template <class T_return, class T_arg1,class T_arg2>
00366       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00367       {
00368         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > sig;
00369         sig = signal_proxy<T_return, T_arg1,T_arg2>::create(path, interface, name);
00370         this->add_signal_proxy( sig );
00371         return sig;
00372       }
00373       
00374       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00375       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00376       {
00377         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > sig;
00378         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3>::create(path, interface, name);
00379         this->add_signal_proxy( sig );
00380         return sig;
00381       }
00382       
00383       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00384       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00385       {
00386         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
00387         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(path, interface, name);
00388         this->add_signal_proxy( sig );
00389         return sig;
00390       }
00391       
00392       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00393       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00394       {
00395         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
00396         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(path, interface, name);
00397         this->add_signal_proxy( sig );
00398         return sig;
00399       }
00400       
00401       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00402       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00403       {
00404         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
00405         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(path, interface, name);
00406         this->add_signal_proxy( sig );
00407         return sig;
00408       }
00409       
00410       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00411       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal_proxy( const std::string& path, const std::string& interface, const std::string& name )
00412       {
00413         DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
00414         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(path, interface, name);
00415         this->add_signal_proxy( sig );
00416         return sig;
00417       }
00418       
00419 
00420 
00424       signal_proxy_base::pointer add_signal_proxy( signal_proxy_base::pointer signal );
00425 
00426       bool remove_signal_proxy( signal_proxy_base::pointer proxy );
00427 
00428       typedef std::list<signal_proxy_base::pointer> ProxySignals;
00429       
00430       typedef std::map<std::string,ProxySignals> NameToProxySignalMap;
00431 
00432       typedef std::map<std::string,NameToProxySignalMap> InterfaceToNameProxySignalMap;
00433 
00435       const InterfaceToNameProxySignalMap& get_signal_proxies();
00436 
00438       NameToProxySignalMap get_signal_proxies( const std::string& interface );
00439 
00441       ProxySignals get_signal_proxies( const std::string& interface, const std::string& member );
00442 
00443       template <class T_return>
00444       DBusCxxPointer<signal<T_return> > create_signal( const std::string& interface, const std::string& name )
00445       {
00446         DBusCxxPointer<signal<T_return> > sig;
00447         sig = signal<T_return>::create(interface, name);
00448         sig->set_connection(this->self());
00449         return sig;
00450       }
00451       
00452       template <class T_return, class T_arg1>
00453       DBusCxxPointer<signal<T_return, T_arg1> > create_signal( const std::string& interface, const std::string& name )
00454       {
00455         DBusCxxPointer<signal<T_return, T_arg1> > sig;
00456         sig = signal<T_return, T_arg1>::create(interface, name);
00457         sig->set_connection(this->self());
00458         return sig;
00459       }
00460       
00461       template <class T_return, class T_arg1,class T_arg2>
00462       DBusCxxPointer<signal<T_return, T_arg1,T_arg2> > create_signal( const std::string& interface, const std::string& name )
00463       {
00464         DBusCxxPointer<signal<T_return, T_arg1,T_arg2> > sig;
00465         sig = signal<T_return, T_arg1,T_arg2>::create(interface, name);
00466         sig->set_connection(this->self());
00467         return sig;
00468       }
00469       
00470       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00471       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> > create_signal( const std::string& interface, const std::string& name )
00472       {
00473         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> > sig;
00474         sig = signal<T_return, T_arg1,T_arg2,T_arg3>::create(interface, name);
00475         sig->set_connection(this->self());
00476         return sig;
00477       }
00478       
00479       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00480       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal( const std::string& interface, const std::string& name )
00481       {
00482         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
00483         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(interface, name);
00484         sig->set_connection(this->self());
00485         return sig;
00486       }
00487       
00488       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00489       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal( const std::string& interface, const std::string& name )
00490       {
00491         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
00492         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(interface, name);
00493         sig->set_connection(this->self());
00494         return sig;
00495       }
00496       
00497       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00498       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal( const std::string& interface, const std::string& name )
00499       {
00500         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
00501         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(interface, name);
00502         sig->set_connection(this->self());
00503         return sig;
00504       }
00505       
00506       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00507       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal( const std::string& interface, const std::string& name )
00508       {
00509         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
00510         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(interface, name);
00511         sig->set_connection(this->self());
00512         return sig;
00513       }
00514       
00515 
00516       
00517       template <class T_return>
00518       DBusCxxPointer<signal<T_return> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00519       {
00520         DBusCxxPointer<signal<T_return> > sig;
00521         sig = signal<T_return>::create(path, interface, name);
00522         sig->set_connection(this->self());
00523         return sig;
00524       }
00525       
00526       template <class T_return, class T_arg1>
00527       DBusCxxPointer<signal<T_return, T_arg1> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00528       {
00529         DBusCxxPointer<signal<T_return, T_arg1> > sig;
00530         sig = signal<T_return, T_arg1>::create(path, interface, name);
00531         sig->set_connection(this->self());
00532         return sig;
00533       }
00534       
00535       template <class T_return, class T_arg1,class T_arg2>
00536       DBusCxxPointer<signal<T_return, T_arg1,T_arg2> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00537       {
00538         DBusCxxPointer<signal<T_return, T_arg1,T_arg2> > sig;
00539         sig = signal<T_return, T_arg1,T_arg2>::create(path, interface, name);
00540         sig->set_connection(this->self());
00541         return sig;
00542       }
00543       
00544       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00545       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00546       {
00547         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> > sig;
00548         sig = signal<T_return, T_arg1,T_arg2,T_arg3>::create(path, interface, name);
00549         sig->set_connection(this->self());
00550         return sig;
00551       }
00552       
00553       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00554       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00555       {
00556         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
00557         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(path, interface, name);
00558         sig->set_connection(this->self());
00559         return sig;
00560       }
00561       
00562       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00563       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00564       {
00565         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
00566         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(path, interface, name);
00567         sig->set_connection(this->self());
00568         return sig;
00569       }
00570       
00571       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00572       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00573       {
00574         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
00575         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(path, interface, name);
00576         sig->set_connection(this->self());
00577         return sig;
00578       }
00579       
00580       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00581       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal( const std::string& path, const std::string& interface, const std::string& name )
00582       {
00583         DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
00584         sig = signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(path, interface, name);
00585         sig->set_connection(this->self());
00586         return sig;
00587       }
00588       
00589 
00590 
00591       //       bool register_object( Object& obj, const std::string & path );
00592 //
00593 //       bool register_signal( signal_base& );
00594 
00596       pointer self();
00597 
00612       static pointer self(DBusConnection* c);
00613       
00614       DBusConnection* cobj();
00615 
00616       static void set_global_change_sigpipe(bool will_modify_sigpipe=true);
00617 
00618     protected:
00619       DBusConnection* m_cobj;
00620       
00621       bool m_private_flag;
00622       
00623       AddWatchSignal m_add_watch_signal;
00624       
00625       sigc::signal<bool,Watch::pointer> m_remove_watch_signal;
00626       
00627       sigc::signal<bool,Watch::pointer> m_watch_toggled_signal;
00628       
00629       AddTimeoutSignal m_add_timeout_signal;
00630       
00631       sigc::signal<bool,Timeout::pointer> m_remove_timeout_signal;
00632       
00633       sigc::signal<bool,Timeout::pointer> m_timeout_toggled_signal;
00634       
00635       sigc::signal<void> m_wakeup_main_signal;
00636       
00637       sigc::signal<void,DispatchStatus> m_dispatch_status_signal;
00638       
00639       FilterSignal m_filter_signal;
00640       
00641       Watches m_unhandled_watches;
00642       
00643       typedef std::map<DBusTimeout*,Timeout::pointer> Timeouts;
00644 
00645       Timeouts m_timeouts;
00646 
00647       friend void init(bool);
00648 
00649       void initialize( bool is_private );
00650 
00651       static dbus_int32_t m_weak_pointer_slot;
00652 
00653       std::map<std::string,ObjectPathHandler::pointer> m_created_objects;
00654 
00655       InterfaceToNameProxySignalMap m_proxy_signal_interface_map;
00656 
00657 //       std::map<SignalReceiver::pointer, sigc::connection> m_sighandler_iface_conn;
00658 
00659 //       std::map<SignalReceiver::pointer, sigc::connection> m_sighandler_member_conn;
00660 
00661 //       void on_signal_handler_interface_changed(SignalReceiver::pointer handler);
00662 
00663 //       void on_signal_handler_member_changed(SignalReceiver::pointer handler);
00664 
00665 //       typedef std::map<std::string,signal_base> SignalVTable;
00666 //
00667 //       typedef std::map<std::string, SignalVTable> InterfaceVTable;
00668 
00669       static dbus_bool_t on_add_watch_callback( DBusWatch* cwatch, void* data );
00670 
00671       static void on_remove_watch_callback( DBusWatch* cwatch, void* data );
00672 
00673       static void on_watch_toggled_callback( DBusWatch* cwatch, void* data );
00674 
00675       static dbus_bool_t on_add_timeout_callback( DBusTimeout* ctimeout, void* data );
00676 
00677       static void on_remove_timeout_callback( DBusTimeout* ctimeout, void* data );
00678 
00679       static void on_timeout_toggled_callback( DBusTimeout* ctimeout, void* data );
00680 
00681       static void on_wakeup_main_callback( void* data );
00682 
00683       static void on_dispatch_status_callback( DBusConnection* connection, DBusDispatchStatus new_status, void* data );
00684 
00685       static DBusHandlerResult on_filter_callback( DBusConnection* connection, DBusMessage* message, void* data );
00686 
00687   };
00688   
00689   inline
00690   Connection::pointer operator<<(Connection::pointer ptr, Message::pointer msg)
00691   {
00692     if (not ptr) return ptr;
00693     *ptr << msg;
00694     return ptr;
00695   }
00696 
00697   inline
00698   Connection::pointer operator<<(Connection::pointer ptr, Message::const_pointer msg)
00699   {
00700     if (not ptr) return ptr;
00701     *ptr << msg;
00702     return ptr;
00703   }
00704 
00705   inline
00706   Connection::pointer operator<<(Connection::pointer ptr, ReturnMessage::pointer msg)
00707   {
00708     if (not ptr) return ptr;
00709     *ptr << msg;
00710     return ptr;
00711   }
00712 
00713   inline
00714   Connection::pointer operator<<(Connection::pointer ptr, ReturnMessage::const_pointer msg)
00715   {
00716     if (not ptr) return ptr;
00717     *ptr << msg;
00718     return ptr;
00719   }
00720 
00721   inline
00722   Connection::pointer operator<<(Connection::pointer ptr, SignalMessage::pointer msg)
00723   {
00724     if (not ptr) return ptr;
00725     *ptr << msg;
00726     return ptr;
00727   }
00728 
00729   inline
00730   Connection::pointer operator<<(Connection::pointer ptr, SignalMessage::const_pointer msg)
00731   {
00732     if (not ptr) return ptr;
00733     *ptr << msg;
00734     return ptr;
00735   }
00736 
00737 }
00738 
00739 #endif
00740 
00741 #include <dbus-cxx/method_impl.h>

Generated on Wed Sep 30 11:14:35 2009 for dbus-cxx by doxygen 1.6.1