Hi Michal, Brian, On Mon, 2019-09-30 at 09:18 +0200, michal.lowas-rzechonek@silvair.com wrote: > Brian, Inga, > > On 09/27, Gix, Brian wrote: > > > For a single MessageReceived() method, the cleanest way is to > > > have the > > > subscription address parameter as a variant (suggested by Michal) > > > or as > > > a dictionary. > > > An array introduces an extra consideration of byte ordering for > > > group > > > addresses. > > > > If variants are easy to sort in scripting languages like python3, > > than I > > suppose I could live with this. > > Last time I checked, it was C that had issues with any type of > 'dynamic' typing, so I wouldn't worry about client languages. > Handling > D-Bus variants in python is trivial. > > > Or is this still a two step process of: > > 1. Determining the u16 vs u128 > > 1.1 unmarshalling the correct type... > > > > What would the signature of the method look like? > > Something like this: > > void MessageReceived(uint16 source, uint16 key_index, > variant destination, > array{byte} data) > > and on the Python side, the handling would look somewhat like this > (since Python doesn't do overloading, at all): > > class ElementInterface: > def MessageReceived(source, key_index, destination, data): > if type(destination) == dbus.types.UINT16: > group_destination = destination > elif type(destination) == dbus.types.ARRAY: > virtual_destination = uuid.UUID(destination) > else: > raise DBusError('Unrecoenized destination type') > > > > What I mostly about is that the represenation of the subscription > > > address in the MessageReceived() method corresponds to the > > > representation in the configuration dictionaries for the Attach() > > > and > > > UpdateModelConfiguration() methods. > > Agreed. > I am fine with this version. Regards, Inga