[Bug 31583] Expose TpProxyFeature in the API

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jan 17 13:22:28 CET 2011


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

--- Comment #11 from Guillaume Desmottes <guillaume.desmottes at collabora.co.uk> 2011-01-17 04:22:27 PST ---
(In reply to comment #7)
> ProxyFeature
> {
>   Quark name;
> 
>   /* If TRUE, every non-core feature in this class depends on this one,
>    * and every feature (core or not) in subclasses depends on this one. */
>   boolean core;

Does that mean that if we have MY_CHANNEL_CORE_FEATURE, we shouldn't call its
prepare function while TP_CHANNEL_CORE hasn't be prepared? We don't do that
atm.

>   /* If TRUE, allow retrying prep of this feature even if it failed once
>    * already. ConnectionManager.CORE needs this. */
>   boolean can_retry;

How so? TP_CONNECTION_MANAGER_FEATURE_CORE is never explicitely prepared by
the user (it doesn't have a prepare function).

>   /* Other dependencies */
>   Quark[] depends_on;
> 
>   /* D-Bus interfaces without which preparation just fails */
>   Quark[] interfaces_needed;
> 
>   /* Guaranteed not to be called until every feature this depends on was
>    * prepared successfully. If any of them failed, this fails too.
>    *
>    * If this is the core feature, the error is equivalent to
>    * tp_proxy_invalidate, unless can_retry is true, in which case
>    * it's equivalent to _tp_proxy_set_features_failed.
>    *
>    * If !can_retry, this will never be called again.
>    */
>   async void prepare() throws GError;
> 
>   /* As above but for before CONNECTED; only relevant to Connection. */
>   async void prepare_after_connected() throws GError;
> }

I made good progess in this branch (based on smcv's work):
http://git.collabora.co.uk/?p=user/cassidy/telepathy-glib;a=shortlog;h=refs/heads/proxy-feature-31583

So far I've done the following changes:
- Make feature preparation async
- Add depends_on
- Add interfaces_needed
+ tests

Still missing:
- Improve CORE dependencies (see above) ?
- Add can_retry
- add prepare_after_connected()
- Make the API public

This branch is already pretty big, so do you prefer reviewing/merging this
first before continuing the refactoring?
It shouldn't introduce any regression comparing to the existing 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.
You are the assignee for the bug.



More information about the telepathy-bugs mailing list