summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorpd <shackan@gmail.com>2008-09-05 16:29:14 +0200
committerpd <shackan@gmail.com>2008-09-05 16:29:14 +0200
commit96eb77ce7eea3b3d6155562fc1c7a7b1c206f287 (patch)
treea67723f9b2cc40d1ccc68b1826e50cece63722b3 /examples
parentfcf526f7f21fc9c6f67b63cafca0e17484c77e75 (diff)
downloaddbus-c++-96eb77ce7eea3b3d6155562fc1c7a7b1c206f287.tar.gz
Redone properties example
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile.am2
-rw-r--r--examples/properties/Makefile.am20
-rw-r--r--examples/properties/README18
-rw-r--r--examples/properties/props-introspect.xml10
-rw-r--r--examples/properties/props-server.cpp46
-rw-r--r--examples/properties/props-server.h21
-rw-r--r--examples/properties/propsgs-client.cpp72
-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.am26
-rw-r--r--examples/properties_get_set/propsgs-client.cpp75
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;
-}