glib-2.0: add missing parameter to Variant.dup_bytestring
[vala-lang.git] / tests / dbus / structs.test
blobd23dd84b81c835a221df0b687bbc93e1f9eec39d
1 Packages: gio-2.0
2 D-Bus
4 Program: client
6 struct FooStruct {
7         int i;
8         string s;
10         public FooStruct (int i, string s) {
11                 this.i = i;
12                 this.s = s;
13         }
16 [DBus (name = "org.example.Test")]
17 interface Test : Object {
18         public abstract FooStruct test_property { owned get; set; }
20         public abstract FooStruct test_struct (FooStruct f, out FooStruct g) throws IOError;
23 void main () {
24         // client
25         Test test = Bus.get_proxy_sync (BusType.SESSION, "org.example.Test", "/org/example/test", DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
27         FooStruct f, g, h;
28         f = FooStruct (42, "hello");
29         h = test.test_struct (f, out g);
30         assert (g.i == 23);
31         assert (g.s == "world");
32         assert (h.i == 11);
33         assert (h.s == "vala");
35         test.test_property = f;
36         g = test.test_property;
37         assert (g.i == 42);
38         assert (g.s == "hello");
41 Program: server
43 struct FooStruct {
44         int i;
45         string s;
47         public FooStruct (int i, string s) {
48                 this.i = i;
49                 this.s = s;
50         }
53 [DBus (name = "org.example.Test")]
54 class Test : Object {
55         public FooStruct test_property { owned get; set; }
57         public FooStruct test_struct (FooStruct f, out FooStruct g) {
58                 assert (f.i == 42);
59                 assert (f.s == "hello");
60                 g = FooStruct (23, "world");
61                 return FooStruct (11, "vala");
62         }
65 MainLoop main_loop;
67 void client_exit (Pid pid, int status) {
68         // client finished, terminate server
69         assert (status == 0);
70         main_loop.quit ();
73 void main () {
74         var conn = Bus.get_sync (BusType.SESSION);
75         conn.register_object ("/org/example/test", new Test ());
77         // try to register service in session bus
78         var request_result = conn.call_sync ("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "RequestName",
79                                               new Variant ("(su)", "org.example.Test", 0x4), null, 0, -1);
80         assert ((uint) request_result.get_child_value (0) == 1);
82         // server ready, spawn client
83         Pid client_pid;
84         Process.spawn_async (null, { "test", "/dbus/structs/client" }, null, SpawnFlags.DO_NOT_REAP_CHILD, null, out client_pid);
85         ChildWatch.add (client_pid, client_exit);
87         main_loop = new MainLoop ();
88         main_loop.run ();