[Telepathy] Re: Some tp-glib feedback

Simon McVittie simon.mcvittie at collabora.co.uk
Thu Apr 5 08:08:01 PDT 2007

On Thu, 29 Mar 2007 at 12:47:30 +0100, Simon McVittie wrote:
> On Thu, 29 Mar 2007 at 12:49:24 +0200, Sjoerd Simons wrote:
> > * TpDynamicHandleRepo
> >     - Not documented that default-normalize-context and normalize-function
> >       properties are not mandatory or what their default is
> Good point, I'll fix that. For reference, the default normalize function
> is (equivalent to) g_strdup and the default default-normalize-context is

Fixed in Darcs.

> > * TpBaseConnection
> >   - TpBaseConnectionProcWithError start_connecting says that it must calculate
> >     and ref the self_handle. But salut can only calculate it during the
> >     connection (as soon as the name is estabished on dns-sd)
> I think it should be OK to change start_connecting's behaviour to be
> "by the time you call t_b_c_change_status (CONNECTED), you must have
> calculated and reffed the self handle".

Fixed in Darcs.

> >   - For some reason the instance fields are missing from the documentation
> I'm puzzled by that too, but will try to fix it.

Fixed in Darcs, eventually.

> >   - Reading the documentation in the header it's not clear which instance 
> >     fields are meant to be set by the base class and which by the subclass
> Fair point, I'll fix that.

Fixed in Darcs.

> > * None of the *_return_from_<whatever> functions end up in the documentation. 
> I'll see what I can do. More code-generation-fu...

Fixed in Darcs.

> I need to document the generated code in a general way, really - a
> chapter in the API docs entitled "How to use the TpSvc... GInterfaces"
> or something.

Still to be done.

> > * ERROR_IF_NOT_CONNECTED_ASYNC would be nice to have as a utility on the base
> >   connection.

Fixed in Darcs.

> > * tp_channel_factory_iface_request takes a guint handle, instead of TpHandle
> >   handle
> Well spotted.

Fixed in Darcs.

> > * tp_channel_factory_iface_request, the request argument must be include if the
> >   signalled new-channel's handle is 0.. but handles can't be 0 right? Also
> >   handle and handle_type can be 0, but i'm unsure how to handle those cases (or
> >   why they would ever be 0)
> The channel might not really have a handle, which is modelled as "handle
> 0 of type 0". This asks for a new "anonymous" channel: for instance, media
> channels are created with handle/type 0, then you add the callee to the
> channel afterwards. If Salut chat rooms are unnamed but just exist as a
> tuple of (multicast IP, port, key) or something, then they should have
> "handle" 0 too.
> > * The Test mixin functions want a gobject instance, the group mixin 
> >   functions want a TpSvcChannelInterfaceGroup.. Would be good to be more
> >   consistent here :)
> Perhaps they should both take a gpointer to avoid unnecessary casts...
> The motivation for some of the group mixin functions taking a
> TpSvcChannelInterfaceGroup* was to make them usable as implementations
> for the GInterface methods straight away - some of the group methods
> were also public API though, so I changed the rest of the group API in
> order to be consistent. With hindsight, that was probably a bad move.

Fixed in Darcs, sort of. Once I release Gabble 0.5.7, if you #define
_TP_CM_UPDATED_FOR_0_5_7 before including any headers, the first
argument will become GObject* and GObjectClass* instead of
TpSvcChannelInterfaceGroup* and TpSvcChannelInterfaceGroupClass*.
(It's just a case of relabelling a pointer which always points to a GObject
that implements TpSvcChannelInterfaceGroup, so no real change...)

In Gabble 0.5.8 (and in Darcs just after the release of 0.5.7) the #define
will no longer be necessary, it'll always be a GObject-based API.

More information about the Telepathy mailing list