Re: Input handling



Yeah, it would be very nice to have something like this (just like dbus
python bindings). But to achieve this, first we need to see what turns out
from Ori's work on GObject introspection / easier DBus glib bindings.

Tadas

> On Thu, 2007-08-16 at 20:38 +0300, Tadas Dailyda wrote:
>> My recommendation would be not to mess with vala when doing D-Bus
>> service. It was quiet some pain to do it in C for me and there were
>> many
>> odd things to figure out about DBus glib bindings. Personally I
>> wouldn't
>> try doing it with Vala.
> I know, writing DBus services using C isn't easy with any existing
> binding, sadly enough.
> That's why it would be a great addition to Vala, to be able to write
> your service/objects in some more "high level" language, which is
> compiled to plain C code, using dbus-glib, libdbus or even something
> completely else, not sorted out yet. Just like now it's very easy to in
> Vala to use an existing object.
>
> It will become something like this:
> using DBus;
> using Glib;
>
> namespace Foo {
> 	[DBusInterface (name = "org.gnome.Foo.Bar")]
> 	interface Bar {
> 		int GetId();
> 	}
>
> 	class MyBar : Bar {
> 		public int GetId() {
> 			return 1;
> 		}
>
> 		public static int main(string[] args) {
> 			var loop = new MainLoop();
> 			var b = new Bar();
> 			var conn = DBus.Bus.get(DBus.BusType.SESSION);
> 			// This registers a new service to the bus
> 			var n = conn.register_service("org.gnome.Foo");
> 			// This registers a new object on the bus on service n
> 			// All interface stuff will be automaticly handled:
> 			// for each DBusInterface the object implements,
> 			// or its parent.
> 			n.register_object(b, "/org/gnome/FooBar");
> 			loop.run();
> 			return 0;
> 		}
> 	}
> }
>
> Here's a sample client:
> using Foo;
>
> class FooClient {
> 	public static int main(string[] args) {
> 		var conn = DBus.Bus.get(DBus.BusType.SESSION);
> 		var foobar = conn.get_object<Bar>("org.gnome.Foo",
> "/org/gnome/FooBar");
> 		try {
> 			return foobar.GetId();
> 		}
> 		catch(DBusError e) {
> 			stdout.print(e.message);
> 			return 1;
> 		}
> 	}
> }
>
>
> So, the goal is not to use dbus-glib from Vala (that's how I started,
> but because of bugs like #464988 to include the dbus-binding-tool
> generated files, it's not possible now). Vala would get in-language
> functionality for DBus services.
>
> Nicolas
>





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