File: rawvariants.test

package info (click to toggle)
vala 0.56.18-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 57,528 kB
  • sloc: ansic: 581,293; sh: 5,357; makefile: 3,980; xml: 3,161; yacc: 1,219; lex: 374; javascript: 23
file content (136 lines) | stat: -rw-r--r-- 3,633 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Packages: gio-2.0
D-Bus

Program: client

[DBus (name = "org.example.Test")]
public interface Test : Object {
	public abstract string test_property { owned get; set; }

	public signal void test_signal (int i);

	public abstract int test_method (int j, int k) throws IOError;
}

[DBus (name = "org.example.Test")]
public interface TestRaw : Object {
	[DBus (signature = "s")]
	public abstract Variant test_property { owned get; set; }

	public signal void test_signal ([DBus (signature = "i")] Variant i);

	[DBus (signature = "i")]
	public abstract Variant test_method ([DBus (signature = "i")] Variant j, [DBus (signature = "i")] Variant k) throws IOError;
}

void test_raw (TestRaw test) {
	var main_loop = new MainLoop ();

	var id = test.test_signal.connect ((var_i) => {
		var i = (int) var_i;
		assert (i == 46);
		main_loop.quit ();
	});

	int j = (int) test.test_method (23, 11);
	assert (j == 42);

	main_loop.run ();
	test.disconnect (id);

	test.test_property = "hello";
	var s = (string) test.test_property;
	assert (s == "hello");
}

void test (Test test) {
	var main_loop = new MainLoop ();

	var id = test.test_signal.connect ((i) => {
		assert (i == 46);
		main_loop.quit ();
	});

	int j = test.test_method (23, 11);
	assert (j == 42);

	main_loop.run ();
	test.disconnect (id);

	test.test_property = "hello";
	var s = test.test_property;
	assert (s == "hello");
}

void main () {
	// raw variant server, standard client
	Test test1 = Bus.get_proxy_sync (BusType.SESSION, "org.example.Test", "/org/example/testraw", DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
	test (test1);

	// standard server, raw variant client
	TestRaw test2 = Bus.get_proxy_sync (BusType.SESSION, "org.example.Test", "/org/example/test", DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
	test_raw (test2);

	// raw variant server, raw variant client
	TestRaw test3 = Bus.get_proxy_sync (BusType.SESSION, "org.example.Test", "/org/example/testraw", DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
	test_raw (test3);
}

Program: server

[DBus (name = "org.example.Test")]
public class Test : Object {
	public string test_property { owned get; set; }

	public signal void test_signal (int i);

	public int test_method (int j, int k) {
		assert (j == 23);
		assert (k == 11);
		test_signal (46);
		return 42;
	}
}

[DBus (name = "org.example.Test")]
public class TestRaw : Object {
	[DBus (signature = "s")]
	public Variant test_property { owned get; set; }

	public signal void test_signal ([DBus (signature = "i")] Variant i);

	[DBus (signature = "i")]
	public Variant test_method ([DBus (signature = "i")] Variant j, [DBus (signature = "i")] Variant k) {
		assert ((int) j == 23);
		assert ((int) k == 11);
		test_signal (46);
		return 42;
	}
}

MainLoop main_loop;

void client_exit (Pid pid, int status) {
	// client finished, terminate server
	assert (status == 0);
	main_loop.quit ();
}

void main () {
	var conn = Bus.get_sync (BusType.SESSION);
	conn.register_object ("/org/example/test", new Test ());
	conn.register_object ("/org/example/testraw", new TestRaw ());

	// try to register service in session bus
	var request_result = conn.call_sync ("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "RequestName",
	                                      new Variant ("(su)", "org.example.Test", 0x4), null, 0, -1);
	assert ((uint) request_result.get_child_value (0) == 1);

	// server ready, spawn client
	Pid client_pid;
	Process.spawn_async (null, { "dbus_rawvariants_client" }, null, SpawnFlags.DO_NOT_REAP_CHILD, null, out client_pid);
	ChildWatch.add (client_pid, client_exit);

	main_loop = new MainLoop ();
	main_loop.run ();
}