libsysprof: add more accessors for dbus message info

This commit is contained in:
Christian Hergert
2023-07-27 14:20:20 -07:00
parent 6e4b0ace8b
commit 19c3d90886
2 changed files with 166 additions and 11 deletions

View File

@ -38,12 +38,18 @@ struct _SysprofDocumentDBusMessageClass
enum {
PROP_0,
PROP_DESTINATION,
PROP_FLAGS,
PROP_INTERFACE,
PROP_MEMBER,
PROP_MESSAGE,
PROP_MESSAGE_LENGTH,
PROP_MESSAGE_TYPE,
PROP_SERIAL,
PROP_PATH,
PROP_REPLY_SERIAL,
PROP_SIGNATURE,
PROP_SENDER,
PROP_DESTINATION,
PROP_SERIAL,
N_PROPS
};
@ -71,6 +77,10 @@ sysprof_document_dbus_message_get_property (GObject *object,
switch (prop_id)
{
case PROP_FLAGS:
g_value_set_flags (value, sysprof_document_dbus_message_get_flags (self));
break;
case PROP_MESSAGE:
g_value_take_object (value, sysprof_document_dbus_message_dup_message (self));
break;
@ -79,6 +89,10 @@ sysprof_document_dbus_message_get_property (GObject *object,
g_value_set_uint (value, sysprof_document_dbus_message_get_message_length (self));
break;
case PROP_REPLY_SERIAL:
g_value_set_uint (value, sysprof_document_dbus_message_get_reply_serial (self));
break;
case PROP_SERIAL:
g_value_set_uint (value, sysprof_document_dbus_message_get_serial (self));
break;
@ -95,6 +109,22 @@ sysprof_document_dbus_message_get_property (GObject *object,
g_value_set_enum (value, sysprof_document_dbus_message_get_message_type (self));
break;
case PROP_INTERFACE:
g_value_set_string (value, sysprof_document_dbus_message_get_interface (self));
break;
case PROP_PATH:
g_value_set_string (value, sysprof_document_dbus_message_get_path (self));
break;
case PROP_MEMBER:
g_value_set_string (value, sysprof_document_dbus_message_get_member (self));
break;
case PROP_SIGNATURE:
g_value_set_string (value, sysprof_document_dbus_message_get_signature (self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@ -121,6 +151,11 @@ sysprof_document_dbus_message_class_init (SysprofDocumentDBusMessageClass *klass
G_TYPE_DBUS_MESSAGE,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_REPLY_SERIAL] =
g_param_spec_uint ("reply-serial", NULL, NULL,
0, G_MAXUINT, 0,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_SERIAL] =
g_param_spec_uint ("serial", NULL, NULL,
0, G_MAXUINT, 0,
@ -136,12 +171,38 @@ sysprof_document_dbus_message_class_init (SysprofDocumentDBusMessageClass *klass
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_INTERFACE] =
g_param_spec_string ("interface", NULL, NULL,
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_PATH] =
g_param_spec_string ("path", NULL, NULL,
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_MEMBER] =
g_param_spec_string ("member", NULL, NULL,
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_SIGNATURE] =
g_param_spec_string ("signature", NULL, NULL,
NULL,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_MESSAGE_TYPE] =
g_param_spec_enum ("message-type", NULL, NULL,
G_TYPE_DBUS_MESSAGE_TYPE,
G_DBUS_MESSAGE_TYPE_INVALID,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
properties[PROP_FLAGS] =
g_param_spec_flags ("flags", NULL, NULL,
G_TYPE_DBUS_MESSAGE_FLAGS,
0,
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties);
}
@ -222,6 +283,32 @@ sysprof_document_dbus_message_dup_message (SysprofDocumentDBusMessage *self)
return self->message ? g_object_ref (self->message) : NULL;
}
GDBusMessageFlags
sysprof_document_dbus_message_get_flags (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), 0);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return 0;
return g_dbus_message_get_flags (message);
}
guint
sysprof_document_dbus_message_get_reply_serial (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), 0);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return 0;
return g_dbus_message_get_reply_serial (message);
}
guint
sysprof_document_dbus_message_get_serial (SysprofDocumentDBusMessage *self)
{
@ -263,6 +350,62 @@ sysprof_document_dbus_message_get_destination (SysprofDocumentDBusMessage *self)
return g_dbus_message_get_destination (message);
}
const char *
sysprof_document_dbus_message_get_interface (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), NULL);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return NULL;
/* Safe because of self->message */
return g_dbus_message_get_interface (message);
}
const char *
sysprof_document_dbus_message_get_member (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), NULL);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return NULL;
/* Safe because of self->message */
return g_dbus_message_get_member (message);
}
const char *
sysprof_document_dbus_message_get_path (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), NULL);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return NULL;
/* Safe because of self->message */
return g_dbus_message_get_path (message);
}
const char *
sysprof_document_dbus_message_get_signature (SysprofDocumentDBusMessage *self)
{
g_autoptr(GDBusMessage) message = NULL;
g_return_val_if_fail (SYSPROF_IS_DOCUMENT_DBUS_MESSAGE (self), NULL);
if (!(message = sysprof_document_dbus_message_dup_message (self)))
return NULL;
/* Safe because of self->message */
return g_dbus_message_get_signature (message);
}
GDBusMessageType
sysprof_document_dbus_message_get_message_type (SysprofDocumentDBusMessage *self)
{

View File

@ -35,22 +35,34 @@ typedef struct _SysprofDocumentDBusMessage SysprofDocumentDBusMessage;
typedef struct _SysprofDocumentDBusMessageClass SysprofDocumentDBusMessageClass;
SYSPROF_AVAILABLE_IN_ALL
GType sysprof_document_dbus_message_get_type (void) G_GNUC_CONST;
GType sysprof_document_dbus_message_get_type (void) G_GNUC_CONST;
SYSPROF_AVAILABLE_IN_ALL
guint sysprof_document_dbus_message_get_message_length (SysprofDocumentDBusMessage *self);
guint sysprof_document_dbus_message_get_message_length (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const guint8 *sysprof_document_dbus_message_get_message_data (SysprofDocumentDBusMessage *self,
guint *length);
const guint8 *sysprof_document_dbus_message_get_message_data (SysprofDocumentDBusMessage *self,
guint *length);
SYSPROF_AVAILABLE_IN_ALL
GDBusMessage *sysprof_document_dbus_message_dup_message (SysprofDocumentDBusMessage *self);
GDBusMessage *sysprof_document_dbus_message_dup_message (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
guint sysprof_document_dbus_message_get_serial (SysprofDocumentDBusMessage *self);
guint sysprof_document_dbus_message_get_serial (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_destination (SysprofDocumentDBusMessage *self);
guint sysprof_document_dbus_message_get_reply_serial (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_sender (SysprofDocumentDBusMessage *self);
const char *sysprof_document_dbus_message_get_destination (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
GDBusMessageType sysprof_document_dbus_message_get_message_type (SysprofDocumentDBusMessage *self);
const char *sysprof_document_dbus_message_get_sender (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
GDBusMessageType sysprof_document_dbus_message_get_message_type (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_interface (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_path (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_member (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
const char *sysprof_document_dbus_message_get_signature (SysprofDocumentDBusMessage *self);
SYSPROF_AVAILABLE_IN_ALL
GDBusMessageFlags sysprof_document_dbus_message_get_flags (SysprofDocumentDBusMessage *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofDocumentDBusMessage, g_object_unref)