[DBus (name = "org.example.Demo")] public class DemoServer : Object { public signal void Lctest(string ff); private string _TestProp = "startval"; public signal void TestSign(string ff); public string TestProp { owned get{ return _TestProp; } set{ _TestProp = value; } } private int counter; public int ping (string msg) { stdout.printf ("%s\n", msg); return counter++; } } public class Test { private DBusConnection conn; private int i = 0; private void on_bus_acquired(DBusConnection connection, string name) { print("bus acquired\n"); try { conn = connection; var sv = new DemoServer (); conn.register_object ("/org/example/Demo", sv); Timeout.add_seconds(4, () => { sv.TestProp = "fff" + i.to_string(); sv.Lctest("signal from server\n"); i++; return true; }); } catch(IOError e) { print("%s\n", e.message); } } private void on_name_acquired(DBusConnection connection, string name) { print("name acquired\n"); } private void on_name_lost(DBusConnection connection, string name) { print("name_lost\n"); } public static void main () { var t = new Test(); try { uint owner_id = Bus.own_name(BusType.SESSION, "org.example.Demo", GLib.BusNameOwnerFlags.NONE, t.on_bus_acquired, t.on_name_acquired, t.on_name_lost); } catch (IOError e) { stderr.printf ("%s\n", e.message); } new MainLoop(null, false).run(); } } //$ valac --pkg gio-2.0 server.vala