dbus-cxx logo

interfaceproxy.h

Go to the documentation of this file.
00001 
00002 // -*- c++ -*-
00003 /* Do not edit! -- generated file */
00004 
00005 #ifndef DBUSCXXINTERFACEPROXY_H
00006 #define DBUSCXXINTERFACEPROXY_H
00007 
00008 #include <sigc++/sigc++.h>
00009 
00010 #include <string>
00011 #include <map>
00012 #include <set>
00013 
00014 #include <dbus-cxx/methodproxy.h>
00015 #include <dbus-cxx/signal_proxy.h>
00016 
00017 namespace DBus {
00018 
00019   class ObjectProxy;
00020 
00027   class InterfaceProxy
00028   {
00029     protected:
00030       InterfaceProxy(const std::string& name);
00031 
00032     public:
00033       typedef DBusCxxPointer<InterfaceProxy> pointer;
00034 
00035       typedef DBusCxxWeakPointer<InterfaceProxy> weak_pointer;
00036       
00037       typedef std::multimap<std::string, MethodProxyBase::pointer> Methods;
00038 
00039       typedef std::set<signal_proxy_base::pointer> Signals;
00040 
00041       static pointer create( const std::string& name = std::string() );
00042 
00043       virtual ~InterfaceProxy();
00044 
00045       ObjectProxy* object() const;
00046 
00047       Path path() const;
00048 
00049       DBusCxxPointer<Connection> connection() const;
00050 
00051       const std::string& name() const;
00052 
00053       void set_name( const std::string& new_name );
00054 
00055       const Methods& methods() const;
00056 
00058       MethodProxyBase::pointer method( const std::string& name ) const;
00059 
00060             template <class T_return>
00061       DBusCxxPointer<MethodProxy<T_return> > create_method( const std::string& name )
00062       {
00063         DBusCxxPointer< MethodProxy<T_return> > method;
00064         method = MethodProxy<T_return>::create(name);
00065         this->add_method(method);
00066         return method;
00067       }
00068       
00069                       template <class T_return, class T_arg1>
00070       DBusCxxPointer<MethodProxy<T_return, T_arg1> > create_method( const std::string& name )
00071       {
00072         DBusCxxPointer< MethodProxy<T_return, T_arg1> > method;
00073         method = MethodProxy<T_return, T_arg1>::create(name);
00074         this->add_method(method);
00075         return method;
00076       }
00077       
00078                       template <class T_return, class T_arg1,class T_arg2>
00079       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2> > create_method( const std::string& name )
00080       {
00081         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2> > method;
00082         method = MethodProxy<T_return, T_arg1,T_arg2>::create(name);
00083         this->add_method(method);
00084         return method;
00085       }
00086       
00087                       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00088       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3> > create_method( const std::string& name )
00089       {
00090         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2,T_arg3> > method;
00091         method = MethodProxy<T_return, T_arg1,T_arg2,T_arg3>::create(name);
00092         this->add_method(method);
00093         return method;
00094       }
00095       
00096                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00097       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_method( const std::string& name )
00098       {
00099         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > method;
00100         method = MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(name);
00101         this->add_method(method);
00102         return method;
00103       }
00104       
00105                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00106       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_method( const std::string& name )
00107       {
00108         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > method;
00109         method = MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(name);
00110         this->add_method(method);
00111         return method;
00112       }
00113       
00114                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00115       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_method( const std::string& name )
00116       {
00117         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > method;
00118         method = MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(name);
00119         this->add_method(method);
00120         return method;
00121       }
00122       
00123                       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>
00124       DBusCxxPointer<MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_method( const std::string& name )
00125       {
00126         DBusCxxPointer< MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > method;
00127         method = MethodProxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(name);
00128         this->add_method(method);
00129         return method;
00130       }
00131       
00132           
00133 
00135       bool add_method( MethodProxyBase::pointer method );
00136 
00138       void remove_method( const std::string& name );
00139 
00141       void remove_method( MethodProxyBase::pointer method );
00142 
00144       bool has_method( const std::string& name ) const;
00145 
00147       bool has_method( MethodProxyBase::pointer method ) const;
00148       
00149       CallMessage::pointer create_call_message( const std::string& method_name ) const;
00150 
00151       ReturnMessage::const_pointer call( CallMessage::const_pointer, int timeout_milliseconds=-1 ) const;
00152 
00153       PendingCall::pointer call_async( CallMessage::const_pointer, int timeout_milliseconds=-1 ) const;
00154 
00155             template <class T_return>
00156       DBusCxxPointer<signal_proxy<T_return> > create_signal( const std::string& sig_name )
00157       {
00158         DBusCxxPointer< signal_proxy<T_return> > sig;
00159         sig = signal_proxy<T_return>::create(this->path(), m_name, sig_name);
00160         this->add_signal(sig);
00161         return sig;
00162       }
00163       
00164                       template <class T_return, class T_arg1>
00165       DBusCxxPointer<signal_proxy<T_return, T_arg1> > create_signal( const std::string& sig_name )
00166       {
00167         DBusCxxPointer< signal_proxy<T_return, T_arg1> > sig;
00168         sig = signal_proxy<T_return, T_arg1>::create(this->path(), m_name, sig_name);
00169         this->add_signal(sig);
00170         return sig;
00171       }
00172       
00173                       template <class T_return, class T_arg1,class T_arg2>
00174       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2> > create_signal( const std::string& sig_name )
00175       {
00176         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2> > sig;
00177         sig = signal_proxy<T_return, T_arg1,T_arg2>::create(this->path(), m_name, sig_name);
00178         this->add_signal(sig);
00179         return sig;
00180       }
00181       
00182                       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00183       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > create_signal( const std::string& sig_name )
00184       {
00185         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2,T_arg3> > sig;
00186         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3>::create(this->path(), m_name, sig_name);
00187         this->add_signal(sig);
00188         return sig;
00189       }
00190       
00191                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00192       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > create_signal( const std::string& sig_name )
00193       {
00194         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
00195         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4>::create(this->path(), m_name, sig_name);
00196         this->add_signal(sig);
00197         return sig;
00198       }
00199       
00200                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00201       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > create_signal( const std::string& sig_name )
00202       {
00203         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
00204         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::create(this->path(), m_name, sig_name);
00205         this->add_signal(sig);
00206         return sig;
00207       }
00208       
00209                       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00210       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > create_signal( const std::string& sig_name )
00211       {
00212         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
00213         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::create(this->path(), m_name, sig_name);
00214         this->add_signal(sig);
00215         return sig;
00216       }
00217       
00218                       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>
00219       DBusCxxPointer<signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > create_signal( const std::string& sig_name )
00220       {
00221         DBusCxxPointer< signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
00222         sig = signal_proxy<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::create(this->path(), m_name, sig_name);
00223         this->add_signal(sig);
00224         return sig;
00225       }
00226       
00227                 
00228 
00229       const Signals& signals() const;
00230 
00231       signal_proxy_base::pointer signal( const std::string& signame );
00232 
00233       bool add_signal( signal_proxy_base::pointer sig );
00234 
00235       bool remove_signal( const std::string& signame );
00236 
00237       bool remove_signal( signal_proxy_base::pointer sig );
00238 
00239       bool has_signal( const std::string& signame ) const;
00240 
00241       bool has_signal( signal_proxy_base::pointer sig ) const;
00242 
00244       sigc::signal<void,const std::string&/*old name*/,const std::string&/*new name*/> signal_name_changed();
00245 
00247       sigc::signal<void,MethodProxyBase::pointer> signal_method_added();
00248 
00250       sigc::signal<void,MethodProxyBase::pointer> signal_method_removed();
00251 
00252     protected:
00253 
00254       friend class ObjectProxy;
00255       
00256       ObjectProxy* m_object;
00257       
00258       std::string m_name;
00259       
00260       Methods m_methods;
00261 
00262       Signals m_signals;
00263 
00264       mutable pthread_rwlock_t m_methods_rwlock;
00265 
00267       pthread_mutex_t m_name_mutex;
00268 
00269       sigc::signal<void,const std::string&,const std::string&> m_signal_name_changed;
00270       
00271       sigc::signal<void,MethodProxyBase::pointer> m_signal_method_added;
00272       
00273       sigc::signal<void,MethodProxyBase::pointer> m_signal_method_removed;
00274 
00275       typedef std::map<MethodProxyBase::pointer,sigc::connection> MethodSignalNameConnections;
00276 
00277       MethodSignalNameConnections m_method_signal_name_connections;
00278 
00279       void on_method_name_changed(const std::string& oldname, const std::string& newname, MethodProxyBase::pointer method);
00280 
00281       void on_object_set_connection( DBusCxxPointer<Connection> conn );
00282 
00283       void on_object_set_path( const std::string& path );
00284   };
00285 
00286 }
00287 
00288 #endif
00289 

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