diff options
author | Andreas Volz <andreas@optolix.mittelerde> | 2008-09-29 23:17:03 +0200 |
---|---|---|
committer | Andreas Volz <andreas@optolix.mittelerde> | 2008-09-29 23:17:03 +0200 |
commit | 13219dd9fce15fab53b27fcc59f66bf15f053956 (patch) | |
tree | 5b690c2439c5d79200bf56caf955ebea5469feeb | |
parent | c1c741cb0c6e0d920f60c9862556a5dd4e68da2e (diff) | |
parent | 5b13d582bc1114d474278e092d2709c9570415c4 (diff) | |
download | dbus-c++-13219dd9fce15fab53b27fcc59f66bf15f053956.tar.gz |
merge from freedesktop.org
Merge git://anongit.freedesktop.org/git/dbus/dbus-c++
Conflicts:
examples/echo/echo-server.cpp
examples/properties/props-server.cpp
18 files changed, 124 insertions, 167 deletions
diff --git a/configure.ac b/configure.ac index bcc83a2..391b4a4 100644 --- a/configure.ac +++ b/configure.ac @@ -201,7 +201,6 @@ AC_OUTPUT( doc/Doxyfile examples/Makefile examples/properties/Makefile - examples/properties_get_set/Makefile examples/echo/Makefile examples/ecore/Makefile examples/hal/Makefile diff --git a/data/org.freedesktop.DBus.xml b/data/org.freedesktop.DBus.xml index 27afd0a..cbb38ab 100644 --- a/data/org.freedesktop.DBus.xml +++ b/data/org.freedesktop.DBus.xml @@ -6,6 +6,22 @@ <arg name="data" direction="out" type="s"/> </method> </interface> + <interface name="org.freedesktop.DBus.Properties"> + <method name="Get"> + <arg name="interface_name" direction="in" type="s"/> + <arg name="property_name" direction="in" type="s"/> + <arg name="value" direction="out" type="v"/> + </method> + <method name="Set"> + <arg name="interface_name" direction="in" type="s"/> + <arg name="property_name" direction="in" type="s"/> + <arg name="value" direction="in" type="v"/> + </method> + <method name="GetAll"> + <arg name="interface_name" direction="in" type="s"/> + <arg name="props" direction="out" type="a{sv}"/> + </method> + </interface> <interface name="org.freedesktop.DBus"> <method name="RequestName"> <arg direction="in" type="s"/> diff --git a/examples/Makefile.am b/examples/Makefile.am index d3cbb7c..b346604 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = properties properties_get_set echo hal glib +SUBDIRS = properties echo hal glib MAINTAINERCLEANFILES = \ Makefile.in diff --git a/examples/echo/echo-server.cpp b/examples/echo/echo-server.cpp index 1d1cb07..cbcd517 100644 --- a/examples/echo/echo-server.cpp +++ b/examples/echo/echo-server.cpp @@ -24,7 +24,6 @@ int32_t EchoServer::Random() std::string EchoServer::Hello(const std::string &name) { - sleep (5); return "Hello " + name + "!"; } diff --git a/examples/glib/Makefile.am b/examples/glib/Makefile.am index 849c468..42a33d8 100644 --- a/examples/glib/Makefile.am +++ b/examples/glib/Makefile.am @@ -1,6 +1,6 @@ EXTRA_DIST = -AM_CPPFLAGS = -I$(top_srcdir)/include $(gtkmm_CFLAGS) -I$(top_srcdir)/tools +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(gtkmm_CFLAGS) -I$(top_srcdir)/tools if HAVE_GTKMM noinst_PROGRAMS = dbus-browser diff --git a/examples/properties/Makefile.am b/examples/properties/Makefile.am index 6cb3ad4..a99749a 100644 --- a/examples/properties/Makefile.am +++ b/examples/properties/Makefile.am @@ -1,16 +1,22 @@ -EXTRA_DIST = README props-introspect.xml +EXTRA_DIST = propsgs-introspect.xml AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -noinst_PROGRAMS = props-server +noinst_PROGRAMS = propsgs-server propsgs-client -props_server_SOURCES = props-glue.h props-server.h props-server.cpp -props_server_LDADD = $(top_builddir)/src/libdbus-c++-1.la +propsgs_server_SOURCES = propsgs-glue-adaptor.h propsgs-server.h propsgs-server.cpp +propsgs_server_LDADD = $(top_builddir)/src/libdbus-c++-1.la -props-glue.h: props-introspect.xml - $(top_builddir)/tools/dbusxx-xml2cpp $^ --adaptor=$@ +propsgs_client_SOURCES = propsgs-glue-proxy.h propsgs-client.h propsgs-client.cpp +propsgs_client_LDADD = $(top_builddir)/src/libdbus-c++-1.la -lpthread -BUILT_SOURCES = props-glue.h +propsgs-glue-adaptor.h: propsgs-introspect.xml + $(top_builddir)/tools/dbusxx-xml2cpp $^ --adaptor=$@ -- + +propsgs-glue-proxy.h: propsgs-introspect.xml + $(top_builddir)/tools/dbusxx-xml2cpp $^ --proxy=$@ -- + +BUILT_SOURCES = propsgs-glue-adaptor.h propsgs-glue-proxy.h CLEANFILES = $(BUILT_SOURCES) dist-hook: diff --git a/examples/properties/README b/examples/properties/README deleted file mode 100644 index 2e7f3d7..0000000 --- a/examples/properties/README +++ /dev/null @@ -1,18 +0,0 @@ -This very simple example shows how to export properties (from objects implementing the org.freedesktop.DBus.Properties interface) - -To test, run `DBUSXX_VERBOSE=1 ./props-server` and try the following commands: - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Get string:"org.freedesktop.DBus.PropsDemo" string:"Version" - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Set string:"org.freedesktop.DBus.PropsDemo" string:"Version" int32:2 - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Set string:"org.freedesktop.DBus.PropsDemo" string:"Message" variant:string:"Hello D-Bus" - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Set string:"org.freedesktop.DBus.PropsDemo" string:"Message" variant:int32:200 - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Get string:"org.freedesktop.DBus.PropsDemo" string:"Message" - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Get string:"org.freedesktop.DBus.PropsDemo" string:"Something" - -dbus-send --dest=org.freedesktop.DBus.Examples.Properties --type=method_call --print-reply /org/freedesktop/DBus/Examples/Properties org.freedesktop.DBus.Properties.Get string:"org.freedesktop.DBus.PropsDemo" int32:100 - diff --git a/examples/properties/props-introspect.xml b/examples/properties/props-introspect.xml deleted file mode 100644 index 1ce7e72..0000000 --- a/examples/properties/props-introspect.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" ?> -<node name="/org/freedesktop/DBus/Examples/Properties"> - <interface name="org.freedesktop.DBus.PropsDemo"> - <property name="Version" type="i" access="read"/> - <property name="Message" type="s" access="readwrite"/> - <signal name="MessageChanged"> - <arg name="message" type="s"/> - </signal> - </interface> -</node> diff --git a/examples/properties/props-server.h b/examples/properties/props-server.h deleted file mode 100644 index 574ec40..0000000 --- a/examples/properties/props-server.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __DEMO_PROPS_SERVER_H -#define __DEMO_PROPS_SERVER_H - -#include <dbus-c++/dbus.h> -#include "props-glue.h" - -class PropsServer -: public org::freedesktop::DBus::PropsDemo_adaptor, - public DBus::IntrospectableAdaptor, - public DBus::PropertiesAdaptor, - public DBus::ObjectAdaptor -{ -public: - - PropsServer(DBus::Connection &connection); - - void on_set_property - (DBus::InterfaceAdaptor &interface, const std::string &property, const DBus::Variant &value); -}; - -#endif//__DEMO_PROPS_SERVER_H diff --git a/examples/properties/propsgs-client.cpp b/examples/properties/propsgs-client.cpp new file mode 100644 index 0000000..d4b51f4 --- /dev/null +++ b/examples/properties/propsgs-client.cpp @@ -0,0 +1,72 @@ +#include "propsgs-client.h" +#include <iostream> +#include <signal.h> +#include <pthread.h> + +using namespace org::freedesktop::DBus; + +static const char *PROPS_SERVER_NAME = "org.freedesktop.DBus.Examples.Properties"; +static const char *PROPS_SERVER_PATH = "/org/freedesktop/DBus/Examples/Properties"; + +PropsClient::PropsClient(DBus::Connection &connection, const char *path, const char *name) +: DBus::ObjectProxy(connection, path, name) +{ +} + +void PropsClient::MessageChanged(const std::string& message) +{ + std::cout << "MessageChanged signal, new value: " << message << "\n"; +}; + +void PropsClient::DataChanged(const double& data) +{ + std::cout << "DataChanged signal, new value:" << data << "\n"; +}; + +void *test_property_proxy(void * input) +{ + PropsClient *client = static_cast<PropsClient*>(input); + + std::cout << "read property 'Version', value:" << client->Version() << "\n"; + + std::cout << "read property 'Message', value:" << client->Message() << "\n"; + + client->Message("message set by property access"); + std::cout << "wrote property 'Message'\n"; + + std::cout << "read property 'Message', value:" << client->Message() << "\n"; + + client->Data(1.1); + std::cout << "wrote property 'Data'\n"; + + return NULL; +} + +DBus::BusDispatcher dispatcher; + +void niam(int sig) +{ + dispatcher.leave(); + pthread_exit(NULL); +} + +int main() +{ + signal(SIGTERM, niam); + signal(SIGINT, niam); + + DBus::default_dispatcher = &dispatcher; + + DBus::_init_threading(); + + DBus::Connection conn = DBus::Connection::SessionBus(); + + PropsClient client (conn, PROPS_SERVER_PATH, PROPS_SERVER_NAME); + + pthread_t thread; + pthread_create(&thread, NULL, test_property_proxy, &client); + + dispatcher.enter(); + + return 0; +} diff --git a/examples/properties_get_set/propsgs-client.h b/examples/properties/propsgs-client.h index 85595d5..99b70c5 100644 --- a/examples/properties_get_set/propsgs-client.h +++ b/examples/properties/propsgs-client.h @@ -7,7 +7,7 @@ class PropsClient : public org::freedesktop::DBus::PropsGSDemo_proxy, public DBus::IntrospectableProxy, -// public DBus::PropertiesProxy, + public DBus::PropertiesProxy, public DBus::ObjectProxy { public: @@ -15,6 +15,8 @@ public: PropsClient(DBus::Connection &connection, const char *path, const char *name); void MessageChanged(const std::string& message); + + void DataChanged(const double& data); }; #endif//__DEMO_PROPS_SERVER_H diff --git a/examples/properties_get_set/propsgs-introspect.xml b/examples/properties/propsgs-introspect.xml index 5c0e74f..1045930 100644 --- a/examples/properties_get_set/propsgs-introspect.xml +++ b/examples/properties/propsgs-introspect.xml @@ -7,5 +7,8 @@ <signal name="MessageChanged"> <arg name="message" type="s"/> </signal> + <signal name="DataChanged"> + <arg name="Data" type="d"/> + </signal> </interface> </node> diff --git a/examples/properties_get_set/propsgs-server.cpp b/examples/properties/propsgs-server.cpp index 8339d20..c3ff23f 100644 --- a/examples/properties_get_set/propsgs-server.cpp +++ b/examples/properties/propsgs-server.cpp @@ -1,4 +1,5 @@ #include "propsgs-server.h" +#include <iostream> #include <signal.h> static const char *PROPS_SERVER_NAME = "org.freedesktop.DBus.Examples.Properties"; @@ -16,9 +17,18 @@ void PropsServer::on_set_property { if (property == "Message") { + std::cout << "'Message' has been changed\n"; + std::string msg = value; this->MessageChanged(msg); } + if (property == "Data") + { + std::cout << "'Data' has been changed\n"; + + double data = value; + this->DataChanged(data); + } } DBus::BusDispatcher dispatcher; diff --git a/examples/properties_get_set/propsgs-server.h b/examples/properties/propsgs-server.h index a3169d6..a3169d6 100644 --- a/examples/properties_get_set/propsgs-server.h +++ b/examples/properties/propsgs-server.h diff --git a/examples/properties_get_set/Makefile.am b/examples/properties_get_set/Makefile.am deleted file mode 100644 index 6e5419d..0000000 --- a/examples/properties_get_set/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -EXTRA_DIST = propsget-introspect.xml - -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include - -noinst_PROGRAMS = propsgs-server propsgs-client - -propsgs_server_SOURCES = propsgs-glue.h propsgs-server.h propsgs-server.cpp -propsgs_server_LDADD = $(top_builddir)/src/libdbus-c++-1.la - -propsgs_client_SOURCES = propsgs-glue.h propsgs-client.h propsgs-client.cpp -propsgs_client_LDADD = $(top_builddir)/src/libdbus-c++-1.la -lpthread - -propsgs-glue-adaptor.h: propsgs-introspect.xml - $(top_builddir)/tools/dbusxx-xml2cpp $^ --adaptor=$@ -- - -propsgs-glue-proxy.h: propsgs-introspect.xml - $(top_builddir)/tools/dbusxx-xml2cpp $^ --proxy=$@ -- - -BUILT_SOURCES = propsgs-glue-adaptor.h propsgs-glue-proxy.h -CLEANFILES = $(BUILT_SOURCES) - -dist-hook: - cd $(distdir); rm -f $(BUILT_SOURCES) - -MAINTAINERCLEANFILES = \ - Makefile.in diff --git a/examples/properties_get_set/propsgs-client.cpp b/examples/properties_get_set/propsgs-client.cpp deleted file mode 100644 index b47ad39..0000000 --- a/examples/properties_get_set/propsgs-client.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "propsgs-client.h" -#include <signal.h> -#include <iostream> - -using namespace org::freedesktop::DBus; - -#define P(x) std::cout << #x << " = " << x << std::endl; - -static const char *PROPS_SERVER_NAME = "org.freedesktop.DBus.Examples.Properties"; -static const char *PROPS_SERVER_PATH = "/org/freedesktop/DBus/Examples/Properties"; - -PropsClient::PropsClient(DBus::Connection &connection, const char *path, const char *name) -: DBus::ObjectProxy(connection, path, name) -{ -} - -void PropsClient::MessageChanged(const std::string& message){ - std::cout << "message received: " << message << std::endl; -}; - -DBus::BusDispatcher dispatcher; - -PropsClient * client; - -void niam(int sig) -{ - dispatcher.leave(); - pthread_exit(NULL); - delete client; -} - -#include <pthread.h> - -void * test_property_proxy(void * input){ - P("1"); - sleep(2); - P(client->Version()); - - P("2"); - sleep(1); - P(client->Message()); - - P("3"); - sleep(1); - client->Message( "message set by property access" ); - - P("4"); - sleep(1); - P(client->Message()); - - P("5"); - sleep(1); - client->Data( 1.1 ); -} - -int main() -{ - signal(SIGTERM, niam); - signal(SIGINT, niam); - - DBus::default_dispatcher = &dispatcher; - - DBus::Connection conn = DBus::Connection::SessionBus(); - - client = new PropsClient(conn, PROPS_SERVER_PATH, PROPS_SERVER_NAME ); - - pthread_t thread; - pthread_create(&thread, NULL, test_property_proxy, 0); - - P("dispatcher.enter();"); - - dispatcher.enter(); - - return 0; -} diff --git a/include/dbus-c++/property.h b/include/dbus-c++/property.h index 992b95d..2e909cb 100644 --- a/include/dbus-c++/property.h +++ b/include/dbus-c++/property.h @@ -76,10 +76,10 @@ public: protected: - virtual void on_get_property(InterfaceAdaptor &interface, const std::string &property, Variant &value) + virtual void on_get_property(InterfaceAdaptor &/*interface*/, const std::string &/*property*/, Variant &/*value*/) {} - virtual void on_set_property(InterfaceAdaptor &interface, const std::string &property, const Variant &value) + virtual void on_set_property(InterfaceAdaptor &/*interface*/, const std::string &/*property*/, const Variant &/*value*/) {} IntrospectedInterface *const introspect() const; diff --git a/src/eventloop-integration.cpp b/src/eventloop-integration.cpp index 5249b5f..ed0cc23 100644 --- a/src/eventloop-integration.cpp +++ b/src/eventloop-integration.cpp @@ -100,7 +100,8 @@ Timeout *BusDispatcher::add_timeout(Timeout::Internal *ti) bt->expired = new Callback<BusDispatcher, void, DefaultTimeout &>(this, &BusDispatcher::timeout_expired); bt->data(bt); - debug_log("added timeout %p (%s)", bt, ((Timeout *)bt)->enabled() ? "on":"off"); + debug_log("added timeout %p (%s) interval=%d", + bt, ((Timeout *)bt)->enabled() ? "on":"off", ((Timeout *)bt)->interval()); return bt; } @@ -120,8 +121,7 @@ Watch *BusDispatcher::add_watch(Watch::Internal *wi) bw->data(bw); debug_log("added watch %p (%s) fd=%d flags=%d", - bw, ((Watch *)bw)->enabled() ? "on":"off", ((Watch *)bw)->descriptor(), ((Watch *)bw)->flags() - ); + bw, ((Watch *)bw)->enabled() ? "on":"off", ((Watch *)bw)->descriptor(), ((Watch *)bw)->flags()); return bw; } |