WvDBusMsg::is_reply() had an unnecessary hack for message #1.
[wvapps.git] / unity / dbus / dbustest.cc
blob8522eb631c44c6c614ef26f623281ac58bbacb20
1 #include "wvdbus.h"
2 #include "wvglibwrapper.h"
3 #include "wvistreamlist.h"
4 #include "wvtcp.h"
5 #include <assert.h>
9 static void myfilter(WvDBus &conn, const WvDBus::Msg &msg)
11 bool match =
12 dbus_message_is_method_call(msg, "ca.nit.dbustest", "StupidMember");
13 wvcon->print("filter_func: %s (matches=%s)\n ",
14 (int)(void *)msg, match);
16 WvStringList l;
17 msg.decode(l);
18 WvStringList::Iter i(l);
19 for (i.rewind(); i.next(); )
20 wvcon->print("'%s' ", *i);
21 wvcon->print("\n");
23 if (match)
25 WvDBus::ReplyMsg reply(msg);
26 dbus_message_append_args(reply,
27 DBUS_TYPE_DOUBLE, 42.6,
28 DBUS_TYPE_STRING, "rstring1",
29 DBUS_TYPE_STRING, "rstring2",
30 DBUS_TYPE_INVALID);
31 conn.send(reply);
32 wvcon->print("sent reply.\n");
37 int main()
39 // link glib mainloop into WvStreams
40 WvIStreamList &list(WvIStreamList::globallist);
41 WvGlibWrapper glib(NULL);
42 list.append(&glib, false);
44 // running connection between wvcon and uniconf daemon, just for fun
45 WvTCPConn tcp("127.0.0.1", 4111);
46 list.append(&tcp, false);
47 list.append(wvcon, false);
48 tcp.autoforward(*wvcon);
49 wvcon->autoforward(tcp);
51 WvDBus conn;
52 conn.setcallback(myfilter);
53 conn.request_name("ca.nit.dbustest");
55 WvDBus::CallMsg msg("ca.nit.dbustest", "/ca/nit/dbustest",
56 "ca.nit.dbustest", "StupidMember");
57 msg.append("yes", "hello", "world");
58 dbus_message_append_args(msg,
59 DBUS_TYPE_DOUBLE, 42.6,
60 DBUS_TYPE_STRING, "string1",
61 DBUS_TYPE_STRING, "string2",
62 DBUS_TYPE_INVALID);
63 dbus_message_append_args(msg,
64 DBUS_TYPE_DOUBLE, 42.6,
65 DBUS_TYPE_STRING, "string1",
66 DBUS_TYPE_STRING, "string2",
67 DBUS_TYPE_INVALID);
70 WvDBus::Msg reply(conn.sendsync(msg, 1000));
71 wvcon->print("reply: %s\n", (int)(DBusMessage*)reply);
74 while (tcp.isok() && wvcon->isok())
75 list.runonce();
77 return 0;