dbus-cxx logo

objectproxy.h

Go to the documentation of this file.
00001 
00002 // -*- c++ -*-
00003 /* Do not edit! -- generated file */
00004 
00005 #ifndef DBUSCXXOBJECTPROXY_H
00006 #define DBUSCXXOBJECTPROXY_H
00007 
00008 #include <sigc++/sigc++.h>
00009 
00010 #include <string>
00011 #include <map>
00012 
00013 #include <dbus-cxx/signal_proxy.h>
00014 #include <dbus-cxx/interfaceproxy.h>
00015 
00016 namespace DBus
00017 {
00018 
00019   class Connection;
00020 
00158   class ObjectProxy
00159   {
00160     protected:
00161 
00162       ObjectProxy( DBusCxxPointer<Connection> conn, const std::string& destination, const std::string& path );
00163 
00164     public:
00165 
00166       typedef DBusCxxPointer<ObjectProxy> pointer;
00167 
00168       static pointer create( const std::string& path );
00169 
00170       static pointer create( const std::string& destination, const std::string& path );
00171 
00172       static pointer create( DBusCxxPointer<Connection> conn, const std::string& path );
00173 
00174       static pointer create( DBusCxxPointer<Connection> conn, const std::string& destination, const std::string& path );
00175 
00176       virtual ~ObjectProxy();
00177 
00178       DBusCxxPointer<Connection> connection() const;
00179 
00180       void set_connection( DBusCxxPointer<Connection> conn );
00181 
00182       const std::string& destination() const;
00183 
00184       void set_destination( const std::string& destination );
00185 
00186       const Path& path() const;
00187 
00188       void set_path( const std::string& path );
00189 
00190       typedef std::multimap<std::string, InterfaceProxy::pointer> Interfaces;
00191 
00192       const Interfaces& interfaces() const;
00193 
00195       InterfaceProxy::pointer interface( const std::string& name ) const;
00196 
00198       InterfaceProxy::pointer operator[]( const std::string& name ) const;
00199 
00201       bool add_interface( InterfaceProxy::pointer interface );
00202 
00208       InterfaceProxy::pointer create_interface( const std::string& name );
00209 
00211       void remove_interface( const std::string& name );
00212 
00214       void remove_interface( InterfaceProxy::pointer interface );
00215 
00216       bool has_interface( const std::string& name ) const;
00217 
00218       bool has_interface( InterfaceProxy::pointer interface ) const;
00219 
00220       InterfaceProxy::pointer default_interface() const;
00221 
00222       bool set_default_interface( const std::string& new_default_name );
00223 
00224       bool set_default_interface( InterfaceProxy::pointer new_default );
00225 
00226       void remove_default_interface();
00227 
00229       bool add_method( const std::string& interface, MethodProxyBase::pointer method );
00230 
00232       bool add_method( MethodProxyBase::pointer method );
00233 
00234       CallMessage::pointer create_call_message( const std::string& interface_name, const std::string& method_name ) const;
00235 
00236       CallMessage::pointer create_call_message( const std::string& method_name ) const;
00237 
00238       ReturnMessage::const_pointer call( CallMessage::const_pointer, int timeout_milliseconds=-1 ) const;
00239 
00240       PendingCall::pointer call_async( CallMessage::const_pointer, int timeout_milliseconds=-1 ) const;
00241 
00242             template <class T_return>
00243       DBusCxxPointer<MethodProxy<T_return> > create_method( const std::string& interface_name, const std::string& method_name )
00244       {
00245         InterfaceProxy::pointer interface = this->interface(interface_name);
00246         if ( not interface ) interface = this->create_interface( interface_name );
00247         return interface->create_method<T_return>(method_name);
00248       }
00249       
00250                       template <class T_return, class T_arg1>
00251       DBusCxxPointer<MethodProxy<T_return, T_arg1> > create_method( const std::string& interface_name, const std::string& method_name )
00252       {
00253         InterfaceProxy::pointer interface = this->interface(interface_name);
00254         if ( not interface ) interface = this->create_interface( interface_name );
00255         return interface->create_method<T_return, T_arg1>(method_name);
00256       }
00257       
00258                       template <class T_return, class T_arg1,class T_arg2>
00259       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2> > create_method( const std::string& interface_name, const std::string& method_name )
00260       {
00261         InterfaceProxy::pointer interface = this->interface(interface_name);
00262         if ( not interface ) interface = this->create_interface( interface_name );
00263         return interface->create_method<T_return, T_arg1,T_arg2>(method_name);
00264       }
00265       
00266                       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00267       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3> > create_method( const std::string& interface_name, const std::string& method_name )
00268       {
00269         InterfaceProxy::pointer interface = this->interface(interface_name);
00270         if ( not interface ) interface = this->create_interface( interface_name );
00271         return interface->create_method<T_return, T_arg1,T_arg2,T_arg3>(method_name);
00272       }
00273       
00274                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00275       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_method( const std::string& interface_name, const std::string& method_name )
00276       {
00277         InterfaceProxy::pointer interface = this->interface(interface_name);
00278         if ( not interface ) interface = this->create_interface( interface_name );
00279         return interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(method_name);
00280       }
00281       
00282                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00283       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_method( const std::string& interface_name, const std::string& method_name )
00284       {
00285         InterfaceProxy::pointer interface = this->interface(interface_name);
00286         if ( not interface ) interface = this->create_interface( interface_name );
00287         return interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(method_name);
00288       }
00289       
00290                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00291       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_method( const std::string& interface_name, const std::string& method_name )
00292       {
00293         InterfaceProxy::pointer interface = this->interface(interface_name);
00294         if ( not interface ) interface = this->create_interface( interface_name );
00295         return interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(method_name);
00296       }
00297       
00298                       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>
00299       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_method( const std::string& interface_name, const std::string& method_name )
00300       {
00301         InterfaceProxy::pointer interface = this->interface(interface_name);
00302         if ( not interface ) interface = this->create_interface( interface_name );
00303         return interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(method_name);
00304       }
00305       
00306           
00307             template <class T_return>
00308       DBusCxxPointer<signal_proxy<T_return> > create_signal( const std::string& interface_name, const std::string& sig_name )
00309       {
00310         InterfaceProxy::pointer interface = this->interface(interface_name);
00311         if ( not interface ) interface = this->create_interface( interface_name );
00312         return interface->create_signal<T_return>(sig_name);
00313       }
00314       
00315                       template <class T_return, class T_arg1>
00316       DBusCxxPointer<signal_proxy<T_return, T_arg1> > create_signal( const std::string& interface_name, const std::string& sig_name )
00317       {
00318         InterfaceProxy::pointer interface = this->interface(interface_name);
00319         if ( not interface ) interface = this->create_interface( interface_name );
00320         return interface->create_signal<T_return, T_arg1>(sig_name);
00321       }
00322       
00323                       template <class T_return, class T_arg1,class T_arg2>
00324       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > create_signal( const std::string& interface_name, const std::string& sig_name )
00325       {
00326         InterfaceProxy::pointer interface = this->interface(interface_name);
00327         if ( not interface ) interface = this->create_interface( interface_name );
00328         return interface->create_signal<T_return, T_arg1,T_arg2>(sig_name);
00329       }
00330       
00331                       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00332       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > create_signal( const std::string& interface_name, const std::string& sig_name )
00333       {
00334         InterfaceProxy::pointer interface = this->interface(interface_name);
00335         if ( not interface ) interface = this->create_interface( interface_name );
00336         return interface->create_signal<T_return, T_arg1,T_arg2,T_arg3>(sig_name);
00337       }
00338       
00339                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00340       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal( const std::string& interface_name, const std::string& sig_name )
00341       {
00342         InterfaceProxy::pointer interface = this->interface(interface_name);
00343         if ( not interface ) interface = this->create_interface( interface_name );
00344         return interface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(sig_name);
00345       }
00346       
00347                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00348       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal( const std::string& interface_name, const std::string& sig_name )
00349       {
00350         InterfaceProxy::pointer interface = this->interface(interface_name);
00351         if ( not interface ) interface = this->create_interface( interface_name );
00352         return interface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(sig_name);
00353       }
00354       
00355                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00356       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal( const std::string& interface_name, const std::string& sig_name )
00357       {
00358         InterfaceProxy::pointer interface = this->interface(interface_name);
00359         if ( not interface ) interface = this->create_interface( interface_name );
00360         return interface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(sig_name);
00361       }
00362       
00363                       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>
00364       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal( const std::string& interface_name, const std::string& sig_name )
00365       {
00366         InterfaceProxy::pointer interface = this->interface(interface_name);
00367         if ( not interface ) interface = this->create_interface( interface_name );
00368         return interface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(sig_name);
00369       }
00370       
00371                 
00372 
00373 
00374       sigc::signal<void,InterfaceProxy::pointer> signal_interface_added();
00375 
00376       sigc::signal<void,InterfaceProxy::pointer> signal_interface_removed();
00377 
00378       sigc::signal<void,InterfaceProxy::pointer/*old default*/,InterfaceProxy::pointer/*new default*/> signal_default_interface_changed();
00379 
00380     protected:
00381 
00382       DBusCxxPointer<Connection> m_connection;
00383 
00384       std::string m_destination;
00385 
00386       Path m_path;
00387       
00388       mutable pthread_rwlock_t m_interfaces_rwlock;
00389 
00390       pthread_mutex_t m_name_mutex;
00391 
00392       Interfaces m_interfaces;
00393 
00394       InterfaceProxy::pointer m_default_interface;
00395 
00396       sigc::signal<void,InterfaceProxy::pointer,InterfaceProxy::pointer> m_signal_default_interface_changed;
00397 
00398       sigc::signal<void,InterfaceProxy::pointer> m_signal_interface_added;
00399 
00400       sigc::signal<void,InterfaceProxy::pointer> m_signal_interface_removed;
00401 
00402       typedef std::map<InterfaceProxy::pointer,sigc::connection> InterfaceSignalNameConnections;
00403 
00404       InterfaceSignalNameConnections m_interface_signal_name_connections;
00405 
00406       void on_interface_name_changed(const std::string& oldname, const std::string& newname, InterfaceProxy::pointer interface);
00407 
00408   };
00409 
00410 }
00411 
00412 #endif

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