[Bug 29973] TpClientChannelFactory interface and TpDefaultChannelFactory

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Oct 7 18:29:16 CEST 2010


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

--- Comment #18 from Simon McVittie <simon.mcvittie at collabora.co.uk> 2010-10-07 09:29:16 PDT ---
> +tp_base_client_set_channel_factory
> +tp_base_client_get_channel_factory

Hmm. Does this mean that if you want to have control over both TpChannel and,
say, TpChannelDispatchOperation, you're going to have to call both
set_channel_factory and set_cdo_factory?

> + * The current version of #TpAutomaticProxyFactory guarantees to create the
> + * following objects:
> + *  - if channel is of type TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, a
> + *  #TpStreamTubeChannel
> + *  - for all the other channel types, a #TpChannel

The constant should have a %.

This is a little vague about what happens now vs. what we guarantee in future.
Perhaps this:

    #TpAutomaticProxyFactory will currently create #TpChannel objects
    as follows:

    - a #TpStreamTubeChannel, if the channel is of type
      %TP_IFACE_CHANNEL_TYPE_STREAM_TUBE;
    - a plain #TpChannel, otherwise

    It is guaranteed that the objects returned by future versions
    will be either the class that is currently used, or a more specific
    subclass of that class.

    TpProxy subclasses other than TpChannel are not currently supported.

Should we have a tp_automatic_proxy_factory_dup()? I expect it'll be quite
commonly-used.

I think there should be a "see also" link to #TpBasicProxyFactory, and vice
versa.

TpBasicProxyFactory should indicate its intended future behaviour:

    This factory implements the #TpClientChannelFactory interface to create
    plain #TpChannel objects. Unlike #TpAutomaticProxyFactory, it will
    not create higher-level subclasses like #TpStreamTubeChannel.

    TpProxy subclasses other than TpChannel are not currently supported.

> +struct _TpClientChannelFactoryInterface {
> +    GTypeInterface parent;
> ...
> +    /*<private>*/
> +    GCallback _padding[7];

The GObject people tell me padding isn't actually necessary for a GInterface,
because they're assumed to be variable-size.

>  #include <telepathy-glib/stream-tube-channel.h>
>  #include <telepathy-glib/stream-tube-connection.h>
> +#include <telepathy-glib/client-channel-factory.h>
> +#include <telepathy-glib/automatic-proxy-factory.h>
> +#include <telepathy-glib/basic-proxy-factory.h>

I'd prefer these in alphabetical order.

-- 
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