comp.lang.ada
 help / color / mirror / Atom feed
From: Reto Buerki <reet@codelabs.ch>
Subject: Re: Empty arrays & libdbusada
Date: Thu, 30 Jun 2016 07:04:31 -0000 (UTC)
Date: 2016-06-30T07:04:31+00:00	[thread overview]
Message-ID: <slrnnn9h3t.jqu.reet@fenrir.codelabs.ch> (raw)
In-Reply-To: dtiu41Fnv9fU1@mid.individual.net

On 2016-06-29, Ian Clifton <ian.clifton@chem.ox.ac.uk> wrote:
> Reto Buerki <reet@codelabs.ch> writes:
>
>> On 2016-06-28, Ian Clifton <ian.clifton@chem.ox.ac.uk> wrote:
>>> I’m trying to learn a bit about controlling programs through D-bus. I
>>> can make things happen with the “D-feet” tool, calling methods in
>>> ork.gtk.Actions and org.gtk.Application, supplying empty arrays (notated
>>> as “[]”) for un‐needed parameters. But when I try to do the equivalent
>>> in Ada code using libdbusada, I hit a snag—libdbusada doesn’t seem to be
>>> able to handle empty arrays. Does anyone know of a way round this?
>>> Thanks,
>>
>> Can you please provide a concrete example of what you are trying to do?
>> What happens if you just remove the empty array arguments?
>>
> Thanks for replying. At the moment I’m trying to control the play‐back
> of a CD using the “Sound Juicer” application on Debian Linux. The
> application exposes the “org.gtk.Actions” interface through D-Bus. Using
> D-feet, I can toggle playback by calling the “Activate” method with
> three arguments:
>
> 'play', [], []
>
> i.e. the string 'play' followed by two empty arrays to mark the places
> of un‐needed parameters. 
>
> If I omit these placeholders in my Ada code I get:
>
>    raised D_BUS.D_BUS_ERROR : Type of message, '(s)', does not match
>    expected type '(sava{sv})'
>
> If I supply empty arrays (uninitialised
> D_Bus.Arguments.Containers.Array_Type variables) I get:
>
>    raised D_BUS.D_BUS_ERROR : Serialization error: Array is empty
>
> and if I put either empty strings or nonsense strings into containers of
> the expected type, my method calls seem to be passed without error but
> are ignored by the application.

Thanks for the detailed description.

Creating an array containing only an empty string should work in this
case. See the D_Bus/Ada notify.adb example where the same is done for
the Notify method of the org.freedesktop.Notifications interface.

Regards,
- reto


  reply	other threads:[~2016-06-30  7:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-28 11:19 Empty arrays & libdbusada Ian Clifton
2016-06-29  9:35 ` Reto Buerki
2016-06-29 21:49   ` Ian Clifton
2016-06-30  7:04     ` Reto Buerki [this message]
2016-06-30 20:54       ` Ian Clifton
2016-07-05 15:33         ` Ian Clifton
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox