| Summary: | TpSimpleObserver - observe channels without writing a TpBaseClient subclass | ||
|---|---|---|---|
| Product: | Telepathy | Reporter: | Simon McVittie <smcv> | 
| Component: | tp-glib | Assignee: | Guillaume Desmottes <guillaume.desmottes> | 
| Status: | RESOLVED FIXED | QA Contact: | Telepathy bugs list <telepathy-bugs> | 
| Severity: | enhancement | ||
| Priority: | medium | CC: | danielle | 
| Version: | unspecified | Keywords: | patch | 
| Hardware: | Other | ||
| OS: | All | ||
| URL: | http://git.collabora.co.uk/?p=user/cassidy/telepathy-glib;a=shortlog;h=refs/heads/simple-observer | ||
| Whiteboard: | review+ | ||
| i915 platform: | i915 features: | ||
| Bug Depends on: | 25236 | ||
| Bug Blocks: | 24214, 27881 | ||
| 
 
        
          Description
        
        
          Simon McVittie
        
        
        
        
          2010-04-28 08:42:17 UTC
        
       
    http://git.collabora.co.uk/?p=user/cassidy/telepathy-glib;a=shortlog;h=refs/heads/simple-observer should be ready for review. It includes a example call observer. I can split it to a different branch for bug #24214 if needed but I think that should be easy enough to review. + * |[
+ * client = tp_simple_observer_new (dbus, TRUE, "MyObserver", FALSE,
+ *    my_observe_channels, user_data);
I'd like this comment to include a stub implementation of my_observe_channels:
static void
my_observe_channels (TpSimpleObserver *self,
    TpAccount *account,
    TpConnection *connection,
    GList *channels,
    TpChannelDispatchOperation *dispatch_operation,
    GList *requests,
    TpObserveChannelsContext *context,
    gpointer user_data)
{
  /* ... do something useful with the channels here ... */
  tp_observe_channels_context_accept (context);
}
I'd also prefer a more realistic filter: matching every TEXT channel is likely to be a mistake (unless your observer is written very carefully), and matching CONTACT TEXT channels would be more normal.
> + * but are not garanteed to be prepared.
"guaranteed"
> + * @channels: a #GPtrArray of #TpChannel having all %TP_CHANNEL_FEATURE_CORE
> + * prepared
"#GList of #TpChannel, all having"
> + * @user_data: arbitrary user-supplied data passed to the callback
This *is* the callback. "passed to tp_simple_observer_new()"
> +      case PROP_OBSERV_IMPL:
I'd prefer this property to be called "callback".
> +tp_simple_observer_new (TpDBusDaemon *dbus,
Shouldn't this take a GDestroyNotify for the user_data, too?
> + * Returns: a new #TpSimpleObserver
"Returns: (type Tp.SimpleObserver): a new #TpSimpleObserver" would be better, I think; we're deliberately "getting the type wrong" for C's benefit, but g-i (and documentation) can benefit from knowing more specifically.
It would be good to update telepathy-doc's example to use this, once it's in.
    (In reply to comment #2) > + * |[ > + * client = tp_simple_observer_new (dbus, TRUE, "MyObserver", FALSE, > + * my_observe_channels, user_data); > > I'd like this comment to include a stub implementation of my_observe_channels: > > static void > my_observe_channels (TpSimpleObserver *self, > TpAccount *account, > TpConnection *connection, > GList *channels, > TpChannelDispatchOperation *dispatch_operation, > GList *requests, > TpObserveChannelsContext *context, > gpointer user_data) > { > /* ... do something useful with the channels here ... */ > > tp_observe_channels_context_accept (context); > } added (without the /* */, C comments can't be nested). > I'd also prefer a more realistic filter: matching every TEXT channel is likely > to be a mistake (unless your observer is written very carefully), and matching > CONTACT TEXT channels would be more normal. fixed. > > + * but are not garanteed to be prepared. > > "guaranteed" fixed (one day I'll be able to spell this word). > > + * @channels: a #GPtrArray of #TpChannel having all %TP_CHANNEL_FEATURE_CORE > > + * prepared > > "#GList of #TpChannel, all having" Fixed. > > + * @user_data: arbitrary user-supplied data passed to the callback > > This *is* the callback. "passed to tp_simple_observer_new()" Fixed. > > + case PROP_OBSERV_IMPL: > > I'd prefer this property to be called "callback". done. > > +tp_simple_observer_new (TpDBusDaemon *dbus, > > Shouldn't this take a GDestroyNotify for the user_data, too? added. > > + * Returns: a new #TpSimpleObserver > > "Returns: (type Tp.SimpleObserver): a new #TpSimpleObserver" would be better, I > think; we're deliberately "getting the type wrong" for C's benefit, but g-i > (and documentation) can benefit from knowing more specifically. done. > It would be good to update telepathy-doc's example to use this, once it's in. I opened bug #27888 Looks good to me! Merged to master! Will be in 0.11.5.  | 
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.