sd_bus_message_read_basic — Read a basic type from a message
#include <systemd/sd-bus.h>
int sd_bus_message_read_basic( | sd_bus_message *m, |
char type, | |
void *p) ; |
sd_bus_message_read_basic()
reads a basic type from a
message and advances the read position in the message. The set of basic
types and their ascii codes passed in type
are
described in the D-Bus
Specification.
If p
is not NULL
, it should contain
a pointer to an appropriate object. For example, if type
is 'y'
, the object passed in p
should have type uint8_t *. If type
is
's'
, the object passed in p
should
have type const char **. Note that, if the basic type is a pointer
(e.g., const char * in the case of a string), the pointer is only
borrowed and the contents must be copied if they are to be used after the end
of the messages lifetime. Similarly, during the lifetime of such a pointer, the
message must not be modified. See the table below for a complete list of allowed
types.
Table 1. Item type specifiers
Specifier | Constant | Description | Expected C Type |
---|---|---|---|
"y " | SD_BUS_TYPE_BYTE | 8bit unsigned integer | uint8_t * |
"b " | SD_BUS_TYPE_BOOLEAN | boolean | int * (NB: not bool *) |
"n " | SD_BUS_TYPE_INT16 | 16bit signed integer | int16_t * |
"q " | SD_BUS_TYPE_UINT16 | 16bit unsigned integer | uint16_t * |
"i " | SD_BUS_TYPE_INT32 | 32bit signed integer | int32_t * |
"u " | SD_BUS_TYPE_UINT32 | 32bit unsigned integer | uint32_t * |
"x " | SD_BUS_TYPE_INT64 | 64bit signed integer | int64_t * |
"t " | SD_BUS_TYPE_UINT64 | 64bit unsigned integer | uint64_t * |
"d " | SD_BUS_TYPE_DOUBLE | IEEE 754 double precision floating-point | double * |
"s " | SD_BUS_TYPE_STRING | UTF-8 string | const char ** |
"o " | SD_BUS_TYPE_OBJECT_PATH | D-Bus object path string | const char ** |
"g " | SD_BUS_TYPE_SIGNATURE | D-Bus signature string | const char ** |
"h " | SD_BUS_TYPE_UNIX_FD | UNIX file descriptor | int * |
If there is no object of the specified type at the current position in the message, an error is returned.
On success, sd_bus_message_read_basic()
returns 0 or
a positive integer. On failure, it returns a negative errno-style error
code.