[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[Vala] A patch for signal emission from a dbus service.
- From: Yu Feng <rainwoodman gmail com>
- To: vala-list gnome org
- Subject: [Vala] A patch for signal emission from a dbus service.
- Date: Sat, 26 Apr 2008 08:06:01 -0400
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]