Copyright (C) 2011 Reto Buerki <reet@codelabs.ch>. Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL).
D_Bus/Ada |
The D_Bus/Ada library provides an Ada binding to the D-Bus message bus used for inter-process communication on most modern Linux desktop systems. LicenceCopyright (C) 2011 Reto Buerki <reet@codelabs.ch>. Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL). DownloadRelease versionThe current release version of D_Bus/Ada is available at http://www.codelabs.ch/download. Verify a ReleaseTo verify the integrity and authenticity of the distribution tarball, import the key http://www.codelabs.ch/keys/0x3DC359DEpub.asc and type the following command: $ gpg --verify libdbusada-{version}.tar.bz2.sig The key fingerprint of the public key (0x3DC359DE) is: Key fingerprint = 752C 4EBC 115D 5EAD 75F7 0F34 A0AE 8AD7 3DC3 59DE Development versionThe current development version of D_Bus/Ada is available through its git repository: $ git clone http://git.codelabs.ch/git/dbus-ada.git A browsable version of the repository is also available here: http://git.codelabs.ch/?p=dbus-ada.git. BuildTo compile D_Bus/Ada on your system, you need to have the following software installed:
TestingBefore you install D_Bus/Ada on your system, you might want to test the library and verify that everything works as expected. D_Bus/Ada contains an unit test suite which can be run by entering the following command: $ make tests InstallationTo install D_Bus/Ada on your system, type the following: $ make PREFIX=/usr/local install If no PREFIX is specified, $(HOME)/libraries is used as install destination. ExamplesD_Bus/Ada provides example code to demonstrate the usage of the D_Bus/Ada API. To build all examples type the following: $ make examples You can start an example application like so: obj/examples/list_names. The following code connects to the D-Bus session bus, calls the remote org.freedesktop.DBus.ListNames method and prints all the results: with Ada.Text_IO; with D_Bus.Arguments.Basic; with D_Bus.Arguments.Containers; with D_Bus.Connection; pragma Unreferenced (D_Bus.Arguments.Basic); pragma Unreferenced (D_Bus.Arguments.Containers); procedure List_Names is use D_Bus; use D_Bus.Arguments.Basic; -- Connect to the D-Bus session bus Conn : constant Connection.Connection_Type := Connection.Connect; Result : Arguments.Argument_List_Type; procedure Print (Argument : Arguments.Argument_Type'Class); -- Print out an argument. procedure Print (Argument : Arguments.Argument_Type'Class) is begin Ada.Text_IO.Set_Col (To => 1); Ada.Text_IO.Put ("(" & Argument.Get_Code'Img & " )"); Ada.Text_IO.Set_Col (To => 10); Ada.Text_IO.Put_Line (Argument.To_String); end Print; begin -- Request a name on the bus Connection.Request_Name (Connection => Conn, Name => "dbus.ada.caller"); -- Call a method on a remote object Result := Connection.Call_Blocking (Connection => Conn, Destination => "org.freedesktop.DBus", Path => "/", Iface => "org.freedesktop.DBus", Method => "ListNames"); Ada.Text_IO.Put_Line ("Method called successfully:"); Arguments.Iterate (List => Result, Process => Print'Access); end List_Names; |