Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[dbus] Add message constructing/parsing helpers
Using vanilla libdbus api for dealing with messages containing
variants and dict arrays can be cumbersome.

Add helper functionality to avoid complexity elsewhere.

Signed-off-by: Simo Piiroinen <simo.piiroinen@jollamobile.com>
  • Loading branch information
spiiroin committed Jan 28, 2020
1 parent 3a950e8 commit f87804b
Show file tree
Hide file tree
Showing 2 changed files with 555 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/usb_moded-dbus-private.h
Expand Up @@ -30,6 +30,8 @@
#ifndef USB_MODED_DBUS_PRIVATE_H_
# define USB_MODED_DBUS_PRIVATE_H_

# include <stdbool.h>

# include "usb_moded-dbus.h" // NOTRIM

# include <dbus/dbus.h>
Expand Down Expand Up @@ -77,5 +79,35 @@ int umdbus_send_available_modes_signal (const char *available_modes
int umdbus_send_hidden_modes_signal (const char *hidden_modes);
int umdbus_send_whitelisted_modes_signal(const char *whitelist);
gboolean umdbus_get_name_owner_async (const char *name, usb_moded_get_name_owner_fn cb, DBusPendingCall **ppc);
const char *umdbus_arg_type_repr (int type);
const char *umdbus_arg_type_signature (int type);
const char *umdbus_msg_type_repr (int type);
bool umdbus_parser_init (DBusMessageIter *iter, DBusMessage *msg);
int umdbus_parser_at_type (DBusMessageIter *iter);
bool umdbus_parser_at_end (DBusMessageIter *iter);
bool umdbus_parser_require_type (DBusMessageIter *iter, int type, bool strict);
bool umdbus_parser_get_bool (DBusMessageIter *iter, bool *pval);
bool umdbus_parser_get_int (DBusMessageIter *iter, int *pval);
bool umdbus_parser_get_string (DBusMessageIter *iter, const char **pval);
bool umdbus_parser_get_object (DBusMessageIter *iter, const char **pval);
bool umdbus_parser_get_variant (DBusMessageIter *iter, DBusMessageIter *val);
bool umdbus_parser_get_array (DBusMessageIter *iter, DBusMessageIter *val);
bool umdbus_parser_get_struct (DBusMessageIter *iter, DBusMessageIter *val);
bool umdbus_parser_get_entry (DBusMessageIter *iter, DBusMessageIter *val);
bool umdbus_append_init (DBusMessageIter *iter, DBusMessage *msg);
bool umdbus_open_container (DBusMessageIter *iter, DBusMessageIter *sub, int type, const char *sign);
bool umdbus_close_container (DBusMessageIter *iter, DBusMessageIter *sub, bool success);
bool umdbus_append_basic_value (DBusMessageIter *iter, int type, const DBusBasicValue *val);
bool umdbus_append_basic_variant (DBusMessageIter *iter, int type, const DBusBasicValue *val);
bool umdbus_append_bool (DBusMessageIter *iter, bool val);
bool umdbus_append_int (DBusMessageIter *iter, int val);
bool umdbus_append_string (DBusMessageIter *iter, const char *val);
bool umdbus_append_bool_variant (DBusMessageIter *iter, bool val);
bool umdbus_append_int_variant (DBusMessageIter *iter, int val);
bool umdbus_append_string_variant (DBusMessageIter *iter, const char *val);
bool umdbus_append_args_va (DBusMessageIter *iter, int type, va_list va);
bool umdbus_append_args (DBusMessageIter *iter, int arg_type, ...);
DBusMessage *umdbus_blocking_call (DBusConnection *con, const char *dst, const char *obj, const char *iface, const char *meth, DBusError *err, int arg_type, ...);
bool umdbus_parse_reply (DBusMessage *rsp, int arg_type, ...);

#endif /* USB_MODED_DBUS_PRIVATE_H_ */

0 comments on commit f87804b

Please sign in to comment.