[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Vala] A patch for signal emission from a dbus service.



Dear folks,

this is a little patch to allow me to emit a dbus signal via the
following code:
--------------
[DBus (name = "org.gnome.TestServer")]
public class TestServer : GLib.Object {
    int64 counter;
    public signal void event(string msg);
    public int64 ping (string msg) {
        message (msg);
        return counter++;
    }
}

void some_func(TestServer server) {
/*suppose server is already registered on the dbus*/	
   server.event("a big event");
}
----------------

I am quite new to vala, looking forward to write a dbus service with
vala. However my service needs signal emission.

I will be very glad if the patch can be accepted and appears in the next
vala release.

Regards,

Yu



Index: valaccodeclassbinding.vala
===================================================================
--- valaccodeclassbinding.vala	(revision 1321)
+++ valaccodeclassbinding.vala	(working copy)
@@ -844,6 +844,16 @@
 
 		dbus_methods.append ("}\n");
 
+		var dbus_signals = new StringBuilder();
+		dbus_signals.append_c('"');
+			foreach (Signal sig in cl.get_signals ()) {
+				dbus_signals.append(dbus_iface_name);
+				dbus_signals.append("\\0");
+				dbus_signals.append(sig.name);
+				dbus_signals.append("\\0");
+			}
+		dbus_signals.append_c('"');
+
 		var dbus_methods_decl = new CCodeDeclaration ("const DBusGMethodInfo");
 		dbus_methods_decl.modifiers = CCodeModifiers.STATIC;
 		dbus_methods_decl.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_methods[]".printf (cl.get_lower_case_cname ()), new CCodeConstant (dbus_methods.str)));
@@ -851,7 +861,7 @@
 
 		var dbus_object_info = new CCodeDeclaration ("const DBusGObjectInfo");
 		dbus_object_info.modifiers = CCodeModifiers.STATIC;
-		dbus_object_info.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_object_info".printf (cl.get_lower_case_cname ()), new CCodeConstant ("{ 0, %s_dbus_methods, %d, %s, \"\\0\", \"\\0\" }".printf (cl.get_lower_case_cname (), method_count, blob.str))));
+		dbus_object_info.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s_dbus_object_info".printf (cl.get_lower_case_cname ()), new CCodeConstant ("{ 0, %s_dbus_methods, %d, %s, %s, \"\\0\" }".printf (cl.get_lower_case_cname (), method_count, blob.str, dbus_signals.str))));
 		codegen.class_init_fragment.append (dbus_object_info);
 
 		var install_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_g_object_type_install_info"));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]