[Bug 27948] TpBaseConnection: support AddClientInterest, RemoveClientInterest
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Tue May 18 12:02:44 CEST 2010
https://bugs.freedesktop.org/show_bug.cgi?id=27948
--- Comment #5 from Guillaume Desmottes <guillaume.desmottes at collabora.co.uk> 2010-05-18 03:02:43 PDT ---
(In reply to comment #3)
> (In reply to comment #2)
> > /* g_strdup (unique name) => gsize total count */
> > + GHashTable *interested_clients;
> > + /* GQuark iface => GHashTable {
> > + * unique name borrowed from interested_clients => gsize count } */
> > + GHashTable *client_interests;
> >
> > A comment explaining the relation between these 2 tables would be useful.
>
> For your insta-reviewing convenience, here's the patch I added:
>
> - /* g_strdup (unique name) => gsize total count */
> + /* g_strdup (unique name) => gsize total count
> + *
> + * This is derivable from @client_interests: e.g. if
> + * client_interests = { LOCATION => { ":1.23" => 5, ":1.42" => 2 },
> + * MAIL_NOTIFICATION => { ":1.23" => 1 } }
> + * then it implies
> + * interested_clients = { ":1.23" => 6, ":1.42" => 2 }
> + */
Looks good!
> > +static void tp_base_connection_interested_name_owner_changed_cb (
> > + TpDBusDaemon *it, const gchar *unique_name, const gchar *new_owner,
> > + gpointer user_data);
> >
> > Should be one line per arg.
>
> I'm still not convinced that doing this for declarations is, in fact, part of
> our coding style, but if it's how to get stuff through review... changed.
I don't care that much tbh :)
> > I'm not sure to properly understand code in _constructor iterating over types.
>
> Its effect is:
>
> foreach (interface @iter in client_interest_interfaces)
> {
> ensure that priv->client_interests contains an empty map for @iter
> }
>
> However, because you can have a hierarchy, like this hypothetical situation:
>
> GObject
> \--- TpBaseConnection (c_i_i is assumed to be empty)
> \--- HazeConnection (c_i_i = [NICKNAMES])
> \--- HazeMSNConnection (c_i_i = [MAIL_NOTIFICATION])
>
> we need to walk the hierarchy from HazeMSNConnection (inclusive) up to
> TpBaseConnection (exclusive), and iterate all of the current class's
> client_interest_interfaces (which I'll abbreviate c_i_i).
>
> The alternative would be to require HazeMSNConnection to have c_i_i =
> [NICKNAMES, MAIL_NOTIFICATION], which isn't particularly onerous, but makes it
> more difficult to introduce a new interface that has a client interest in a
> superclass and make it work automagically in subclasses - the subclasses would
> either have to copy the parent's c_i_i manually, which is irritating, or make
> assumptions about the parent's c_i_i, which will break additions of
> functionality in superclasses.
>
> I might at some point add a non-empty c_i_i to TpBaseConnection, if we come up
> with API that requires it on all connections (I've wondered about doing this as
> a solution to the handle-reffing problem).
>
> If you don't fancy reviewing this bit but aren't particularly opposed to it,
> can I get Will or Sjoerd to have a look?
Yeah that would be good, to have at least the general idea reviewed.
> > +#define SUPPORTED_INTERFACE "com.example.rannoch.ChineseHerbalMedicine"
> > I didn't get this reference ;)
>
> en_GB in-joke - politicians whose other jobs/personal life/etc. could be
> influencing their political decisions are required to "declare an interest"
> (i.e. warn people about their potential bias). Since this Telepathy feature
> could also be called "declaring an interest", I searched the official record of
> Parliamentary debates for that phrase and used the first couple of interests I
> found.
Wow, that was rather subtile :)
I'll review client side code.
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the telepathy-bugs
mailing list