summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Volz <andreas@optolix.mittelerde>2008-09-29 23:17:03 +0200
committerAndreas Volz <andreas@optolix.mittelerde>2008-09-29 23:17:03 +0200
commit13219dd9fce15fab53b27fcc59f66bf15f053956 (patch)
tree5b690c2439c5d79200bf56caf955ebea5469feeb
parentc1c741cb0c6e0d920f60c9862556a5dd4e68da2e (diff)
parent5b13d582bc1114d474278e092d2709c9570415c4 (diff)
downloaddbus-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
-rw-r--r--configure.ac1
-rw-r--r--data/org.freedesktop.DBus.xml16
-rw-r--r--examples/Makefile.am2
-rw-r--r--examples/echo/echo-server.cpp1
-rw-r--r--examples/glib/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.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
-rw-r--r--include/dbus-c++/property.h4
-rw-r--r--src/eventloop-integration.cpp6
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;
}