[Bug 59024] Think about a more introspectable way of doing mixins

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Apr 11 08:41:42 PDT 2014


https://bugs.freedesktop.org/show_bug.cgi?id=59024

--- Comment #17 from Xavier Claessens <xclaesse at gmail.com> ---
(In reply to comment #15)
> * TpPresenceMixin is a GInterface
> * TpPresenceSkeleton is a GDBusInterfaceSkeleton subclass
> * HazeConnection has-a TpPresenceSkeleton, and implements TpPresenceMixin
> * TpPresenceSkeleton calls methods on TpPresenceMixin
> * haze_connection_constructed() adds its TpPresenceSkeleton to its
>   GDBusObjectSkeleton list of interfaces

Hmmm. But TpPresenceSkeleton would be subclass of
_TpGDBusConnectionInterfacePresence1 and I don't want that codegen to be
public. I woudld the rather have:

 * TpPresenceMixinInterface is-a GInterface for TpBaseConnection subclasses.
 * TpPresenceMixin is-a GObject.
 * TpPresenceMixin has-a _TpGDBusConnectionInterfacePresence1.
 * TpPresenceMixin has-a TpPresenceMixinInterface implementation
(HazeConnection).
 * TpPresenceMixin::constructed calls
g_dbus_object_skeleton_add_interface(self->priv->base_conn,
self->priv->skeleton);

I think presence is small and fundamental enough to be part of TpBaseConnection
instead of having yet another object with all its boilerplate. And that doesn't
prevent doing standalone objects for future sidecars interfaces. What I like in
my branch is that CMs only need to implement an interface, nothing else. Even
fill_contact_attributes() is handled for them.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the telepathy-bugs mailing list