[Bug 51441] New: [next] replace TpBase*Class::interfaces by TpBase*Class::get_interfaces

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Jun 26 06:12:58 CEST 2012


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

             Bug #: 51441
           Summary: [next] replace TpBase*Class::interfaces by
                    TpBase*Class::get_interfaces
    Classification: Unclassified
           Product: Telepathy
           Version: unspecified
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: tp-glib
        AssignedTo: telepathy-bugs at lists.freedesktop.org
        ReportedBy: xclaesse at gmail.com
         QAContact: telepathy-bugs at lists.freedesktop.org


Currently TpBase*Class have inconsistent way of letting implementation tell
which dbus interfaces are implemented. Historically they had a const gchar *
const *interfaces; field, but it has the problem that subsubclass can't define
additional interfaces.

For example we have
TpBaseChannel->TpBaseCallChannel->TpBaseMediaCallChannel->GabbleCallChannel and
at each level we may have additional interfaces. To Fix that issue we
deprecated the "interfaces" field from TpBaseChannel and added GPtrArray
*get_interfaces (TpBaseChannel *self); so subclasses can override that method,
first chainup to get the GPtrArray of interfaces implemented by parents then
simply g_ptr_array_add() extra ifaces and return that.

TpBaseChannel, TpBaseCallContent and TpBaseCallStream use that system, but not
TpBaseConnection, TpBaseConnectionManager, TpBaseRoomConfig and TpBaseProtocol.
This is current inconsistent, so I suggest using the get_interfaces everywhere.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- 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