From: Javier Jardón Date: Fri, 6 May 2011 14:34:21 +0000 (+0100) Subject: Add basic dbus implementation X-Git-Tag: 0.7.1~284 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot-ui.git;a=commitdiff_plain;h=ee4610858c5d7cd8b82e03ac17ed788d2393af33 Add basic dbus implementation We are using the dbus-glib deprecated bindings as we can not depend on glib 2.26 for now --- diff --git a/Makefile.am b/Makefile.am index 48c287e..c50e3d2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} SUBDIRS = po -bin_PROGRAMS = src/moonshot +bin_PROGRAMS = src/moonshot src/dbus-client AM_CPPFLAGS = \ @@ -12,7 +12,7 @@ AM_CPPFLAGS = \ AM_VALAFLAGS = \ config.vapi \ - --pkg gtk+-2.0 + --pkg gtk+-2.0 --pkg dbus-glib-1 src_moonshot_SOURCES = \ src/moonshot-id.vala \ @@ -20,7 +20,14 @@ src_moonshot_SOURCES = \ src/moonshot-idcard-widget.vala \ src/moonshot-custom-vbox.vala \ src/moonshot-identities-manager.vala \ + src/moonshot-dbus-server.vala \ src/moonshot-window.vala +src_dbus_client_SOURCES = \ + src/dbus-client.vala + src_moonshot_LDADD = \ $(moonshot_LIBS) + +src_dbus_client_LDADD = \ + $(moonshot_LIBS) diff --git a/configure.ac b/configure.ac index b95bad1..6f361e4 100644 --- a/configure.ac +++ b/configure.ac @@ -23,6 +23,7 @@ PKG_CHECK_MODULES(moonshot,[ glib-2.0 >= 2.24 gobject-2.0 >= 2.24 gtk+-2.0 >= 2.20 + dbus-glib-1 ]) # i18n stuff diff --git a/src/dbus-client.vala b/src/dbus-client.vala new file mode 100644 index 0000000..9b24f73 --- /dev/null +++ b/src/dbus-client.vala @@ -0,0 +1,22 @@ +[DBus (name = "org.janet.Moonshot")] +interface Moonshot : Object { + public abstract int ping (string msg) throws DBus.Error; + public abstract string[] get_identity (string identity, string username, string password) throws DBus.Error; +} + +void main () { + try { + var conn = DBus.Bus.get (DBus.BusType.SESSION); + var demo = (Moonshot) conn.get_object ("org.janet.Moonshot", + "/org/janet/moonshot"); + + int pong = demo.ping ("Hello from Vala"); + stdout.printf ("%d\n", pong); + + var text = demo.get_identity ("identity", "username", "pass"); + stdout.printf ("%s %s %s\n", text[0], text[1], text[2]); + + } catch (DBus.Error e) { + stderr.printf ("%s\n", e.message); + } +} diff --git a/src/moonshot-dbus-server.vala b/src/moonshot-dbus-server.vala new file mode 100644 index 0000000..038d1dd --- /dev/null +++ b/src/moonshot-dbus-server.vala @@ -0,0 +1,19 @@ +[DBus (name = "org.janet.Moonshot")] +public class MoonshotServer : Object { + private int counter; + + public int ping (string msg) + { + stdout.printf ("%s\n", msg); + return counter++; + } + + public string[] get_identity (string identity, + string password, + string service) + { + string[3] information = {"identity", "password", "certificate"}; + + return information; + } +} diff --git a/src/moonshot-window.vala b/src/moonshot-window.vala index c2e3678..7164c0a 100644 --- a/src/moonshot-window.vala +++ b/src/moonshot-window.vala @@ -17,6 +17,8 @@ class MainWindow : Window private IdentitiesManager identities_manager; + private MoonshotServer dbus_server; + private enum Columns { IDCARD_COL, @@ -38,6 +40,7 @@ class MainWindow : Window load_gss_eap_id_file(); //load_id_cards(); connect_signals(); + init_dbus_server(); } private bool visible_func (TreeModel model, TreeIter iter) @@ -465,6 +468,28 @@ class MainWindow : Window this.destroy.connect (Gtk.main_quit); } + private void init_dbus_server () + { + try { + var conn = DBus.Bus.get (DBus.BusType.SESSION); + dynamic DBus.Object bus = conn.get_object ("org.freedesktop.DBus", + "/org/freedesktop/DBus", + "org.freedesktop.DBus"); + + // try to register service in session bus + uint reply = bus.request_name ("org.janet.Moonshot", (uint) 0); + assert (reply == DBus.RequestNameReply.PRIMARY_OWNER); + + this.dbus_server = new MoonshotServer (); + conn.register_object ("/org/janet/moonshot", dbus_server); + + } + catch (DBus.Error e) + { + stderr.printf ("%s\n", e.message); + } + } + public static int main(string[] args) { Gtk.init(ref args);