sd_bus_message_read_array - Access an array of elements in a message
const void **ptr,
sd_bus_message_read_array() provides access to an array elements in the
bus message m. The "read pointer" in the message must be
right before an array of type type. As a special case, type may
be NUL, in which case any trivial type is acceptable. A pointer to the
array data is returned in the parameter ptr and the size of array data
(in bytes) is returned in the parameter size. If the returned
size parameter is 0, a valid non-null pointer will be returned as
ptr, but it may not be dereferenced. The data is aligned as appropriate
for the data type. The data is part of the message — it may not be
modified and is valid only as long as the message is referenced. After this
function returns, the "read pointer" points at the next element
after the array.
Note that this function only supports arrays of trivial types,
i.e. arrays of booleans, the various integer types, as well as floating
point numbers. In particular it may not be used for arrays of strings,
structures or similar.
On success and when an array was read, sd_bus_message_read_array()
returns an integer greater than zero. If invoked while inside a container
element (such as an array, e.g. when operating on an array of arrays) and the
final element of the outer container has been read already and the read
pointer is thus behind the last element of the outer container this call
returns 0 (and the returned pointer will be NULL and the size will be
0). On failure, it returns a negative errno-style error code.
Returned errors may indicate the following problems:
Specified type is invalid or not a trivial type (see
above), or the message parameter or one of the output parameters are
The byte order in the message is different than native
The message is not sealed.
The message cannot be parsed.