summaryrefslogtreecommitdiff
path: root/codegen/valagdbusservertransformer.vala
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2013-05-04 15:35:04 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2019-03-11 13:52:38 +0100
commit1ea6d18e7a28f7a00bdffc4753905ae078bdd7ae (patch)
tree2ee4cea17930fb4370e86a6da97a15f7a6716126 /codegen/valagdbusservertransformer.vala
parente8db18f544b23b3aac9c5940c3f3a3227e483fc3 (diff)
downloadvala-1ea6d18e7a28f7a00bdffc4753905ae078bdd7ae.tar.gz
Fix passing BusName and manage unhandled GErrors
Diffstat (limited to 'codegen/valagdbusservertransformer.vala')
-rw-r--r--codegen/valagdbusservertransformer.vala16
1 files changed, 12 insertions, 4 deletions
diff --git a/codegen/valagdbusservertransformer.vala b/codegen/valagdbusservertransformer.vala
index 418f955e0..223663eb5 100644
--- a/codegen/valagdbusservertransformer.vala
+++ b/codegen/valagdbusservertransformer.vala
@@ -47,11 +47,12 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
var iter = b.add_temp_declaration (null, expression ("arguments.iterator ()"));
- var call = (MethodCall) expression (@"object.$(m.name) ()");
- var finish_call = call;
+ MethodCall call;
+ MethodCall finish_call;
Method ready = null;
CodeBuilder ready_builder = null;
if (m.coroutine) {
+ call = (MethodCall) expression (@"object.$(m.name).begin ()");
wrapper_method (new VoidType (), "gdbus_server_async_ready " + m.get_full_name (), out ready);
ready.add_parameter (new Parameter ("source_object", data_type ("GLib.Object", false)));
ready.add_parameter (new Parameter ("res", data_type ("GLib.AsyncResult", false)));
@@ -59,6 +60,8 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
ready_builder = new CodeBuilder.for_subroutine (ready);
finish_call = (MethodCall) expression (@"(($object_type) source_object).$(m.name).end (res)");
+ } else {
+ call = finish_call = (MethodCall) expression (@"object.$(m.name) ()");
}
var out_args = new string[0];
@@ -70,11 +73,13 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
if (param.variable_type is ObjectType) {
type_name = param.variable_type.data_type.get_full_name ();
}
+
if (type_name == "GLib.Cancellable") {
call.add_argument (expression ("null"));
continue;
}
if (type_name == "GLib.BusName") {
+ call.add_argument (expression ("(GLib.BusName) invocation.get_sender ()"));
continue;
}
@@ -111,8 +116,8 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
} else {
b.add_expression (finish_call);
}
- b.add_catch (data_type ("GLib.Error"), "e");
- b.add_expression (expression ("invocation.return_gerror (e)"));
+ b.add_catch_all ("_invocation_gerror_");
+ b.add_expression (expression ("invocation.return_gerror (_invocation_gerror_)"));
b.add_return ();
b.close ();
@@ -129,7 +134,10 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
if (fd_list != null) {
b.add_expression (expression (@"$reply.set_unix_fd_list ($fd_list)"));
}
+ b.open_try ();
b.add_expression (expression (@"invocation.get_connection ().send_message ($reply, GLib.DBusSendMessageFlags.NONE, null)"));
+ b.add_catch_uncaught_error ();
+ b.close ();
if (m.coroutine) {
pop_builder ();