| Summary: | TpAccount connection features? | ||
|---|---|---|---|
| Product: | Telepathy | Reporter: | Jonny Lamb <jonny.lamb> |
| Component: | tp-glib | Assignee: | Telepathy bugs list <telepathy-bugs> |
| Status: | RESOLVED FIXED | QA Contact: | Telepathy bugs list <telepathy-bugs> |
| Severity: | normal | ||
| Priority: | medium | ||
| Version: | git master | ||
| Hardware: | Other | ||
| OS: | All | ||
| URL: | http://cgit.collabora.com/git/user/xclaesse/telepathy-glib.git/log/?h=contact-list | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Bug Depends on: | 38142 | ||
| Bug Blocks: | |||
|
Description
Jonny Lamb
2011-04-26 03:16:25 UTC
(In reply to comment #0) > If there was some kind of TP_ACCOUNT_FEATURE_CONNECTION_CONNECTED or similar > features on a TpAccount which could prepare the TpConnection in a TpAccount if > it was there that would be really useful as I would only have to prepare the > TpAccount once and when that returned I'd already have my connection set up as > I wanted it! Wow, that's all one sentence! Go me! Another way to do this, which I think I'd prefer, would be:
void tp_account_prepare_connection_async (TpAccount *self,
const GQuark *account_features,
const GQuark *connection_features,
the usual async goo);
gboolean tp_account_prepare_connection_finish (TpAccount *self,
TpConnection **,
GError **);
Either way, it's worth documenting very clearly that this isn't, in itself, sufficient to make the account go online: you have to set a requested presence too. (Maybe there should be a version that takes 3 extra arguments representing the RequestedPresence, or a version that copies the AutomaticPresence to the RequestedPresence if it isn't already "something online-looking".)
If ChangingPresence goes from true to false with no Connection, any pending tp_account_prepare_connection_async calls should probably also fail, with the ConnectionError as error.
(In reply to comment #2) > Another way to do this, which I think I'd prefer, would be: > > void tp_account_prepare_connection_async (TpAccount *self, > const GQuark *account_features, > const GQuark *connection_features, > the usual async goo); > gboolean tp_account_prepare_connection_finish (TpAccount *self, > TpConnection **, > GError **); > > Either way, it's worth documenting very clearly that this isn't, in itself, > sufficient to make the account go online: you have to set a requested presence > too. (Maybe there should be a version that takes 3 extra arguments representing > the RequestedPresence, or a version that copies the AutomaticPresence to the > RequestedPresence if it isn't already "something online-looking".) This would help in the initial “Okay I have the account now I want the connection” case but it doesn't help you monitor the coming and going of a connection on an existing account. Could we have a TpAccount::connection-prepared signal whose detail is the feature quark you're interested in? :D I've actually did similar as part of bug #26205: http://cgit.collabora.com/git/user/xclaesse/telepathy-glib.git/log/?h=contact-list The idea is that I can set desired contact features on the connection, desired connection+contact features on the account and desired account+connection+contact features on the AM, like that a single async method on the AM and *everything* is ready to go. This part is already merged into master. preparing TP_ACCOUNT_FEATURE_CONNECTION on your TpAccount will ensure that the TpConnection object exposed will always be ready. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.