diff options
author | pd <shackan@gmail.com> | 2008-09-05 16:29:14 +0200 |
---|---|---|
committer | pd <shackan@gmail.com> | 2008-09-05 16:29:14 +0200 |
commit | 96eb77ce7eea3b3d6155562fc1c7a7b1c206f287 (patch) | |
tree | a67723f9b2cc40d1ccc68b1826e50cece63722b3 /examples | |
parent | fcf526f7f21fc9c6f67b63cafca0e17484c77e75 (diff) | |
download | dbus-c++-96eb77ce7eea3b3d6155562fc1c7a7b1c206f287.tar.gz |
Redone properties example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/Makefile.am | 2 | ||||
-rw-r--r-- | examples/properties/Makefile.am | 20 | ||||
-rw-r--r-- | examples/properties/README | 18 | ||||
-rw-r--r-- | examples/properties/props-introspect.xml | 10 | ||||
-rw-r--r-- | examples/properties/props-server.cpp | 46 | ||||
-rw-r--r-- | examples/properties/props-server.h | 21 | ||||
-rw-r--r-- | examples/properties/propsgs-client.cpp | 72 | ||||
-rw-r--r-- | examples/properties/propsgs-client.h (renamed from examples/properties_get_set/propsgs-client.h) | 4 | ||||
-rw-r--r-- | examples/properties/propsgs-introspect.xml (renamed from examples/properties_get_set/propsgs-introspect.xml) | 3 | ||||
-rw-r--r-- | examples/properties/propsgs-server.cpp (renamed from examples/properties_get_set/propsgs-server.cpp) | 10 | ||||
-rw-r--r-- | examples/properties/propsgs-server.h (renamed from examples/properties_get_set/propsgs-server.h) | 0 | ||||
-rw-r--r-- | examples/properties_get_set/Makefile.am | 26 | ||||
-rw-r--r-- | examples/properties_get_set/propsgs-client.cpp | 75 |
13 files changed, 102 insertions, 205 deletions
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/properties/Makefile.am b/examples/properties/Makefile.am index 6cb3ad4..6e5419d 100644 --- a/examples/properties/Makefile.am +++ b/examples/properties/Makefile.am @@ -1,16 +1,22 @@ -EXTRA_DIST = README props-introspect.xml +EXTRA_DIST = propsget-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.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.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.cpp b/examples/properties/props-server.cpp deleted file mode 100644 index f782489..0000000 --- a/examples/properties/props-server.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "props-server.h" -#include <signal.h> - -static const char *PROPS_SERVER_NAME = "org.freedesktop.DBus.Examples.Properties"; -static const char *PROPS_SERVER_PATH = "/org/freedesktop/DBus/Examples/Properties"; - -PropsServer::PropsServer(DBus::Connection &connection) -: DBus::ObjectAdaptor(connection, PROPS_SERVER_PATH) -{ - Version = 1; - Message = "default message"; -} - -void PropsServer::on_set_property - (DBus::InterfaceAdaptor &interface, const std::string &property, const DBus::Variant &value) -{ - if (property == "Message") - { - std::string msg = value; - this->MessageChanged(msg); - } -} - -DBus::BusDispatcher dispatcher; - -void niam(int sig) -{ - dispatcher.leave(); -} - -int main() -{ - signal(SIGTERM, niam); - signal(SIGINT, niam); - - DBus::default_dispatcher = &dispatcher; - - DBus::Connection conn = DBus::Connection::SessionBus(); - conn.request_name(PROPS_SERVER_NAME); - - PropsServer server(conn); - - dispatcher.enter(); - - return 0; -} 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; -} |