## TpClientChannelFactoryInterface TpClientChannelFactoryInterface — an interface for client channel factories |

## Functions

TpChannel * | tp_client_channel_factory_create_channel ()
GArray * | tp_client_channel_factory_dup_channel_features ()

## Types and Values

| TpClientChannelFactory
struct | TpClientChannelFactoryInterface

## Object Hierarchy

        GInterface
        ╰── TpClientChannelFactory

## Prerequisites

TpClientChannelFactory requires GObject.

## Known Implementations

TpClientChannelFactory is implemented by TpAutomaticProxyFactory and TpBasicProxyFactory.

## Includes

    #include <telepathy-glib/telepathy-glib.h>

## Description

Client channel factories are used to create channel proxies. An application wanting to use its own TpChannel subclass has to implement an object implementing the TpClientChannelFactoryInterface interface.

Once a channel has been created by a factory using `tp_client_channel_factory_create_channel()`, the caller should then prepare on it the channel features returned by `tp_client_channel_factory_dup_channel_features()` using `tp_proxy_prepare_async()`.

## Functions

### tp_client_channel_factory_create_channel ()

    TpChannel *
    tp_client_channel_factory_create_channel
                                   (TpClientChannelFactory *self,
                                    TpConnection *conn,
                                    const gchar *path,
                                    GHashTable *properties,
                                    GError **error);

Function called when a channel need to be created. Implementation can return a subclass of TpChannel if they need to.

Changed in 0.13.6: the function's signature was previously wrong; it expected an object instance as its first parameter, but the type of the parameter was the type of the interface vtable.

#### Parameters

self | a client channel factory |
conn | a TpConnection |
path | the object path of the channel |
properties | the immutable properties of the channel. | [transfer none][element-type utf8 GObject.Value]
error | used to indicate the error if `NULL` is returned |

#### Returns

a new channel proxy, or `NULL` on invalid arguments.

[transfer full]

Since: 0.13.2

### tp_client_channel_factory_dup_channel_features ()

    GArray *
    tp_client_channel_factory_dup_channel_features
                                   (TpClientChannelFactory *self,
                                    TpChannel *channel);

Return a zero terminated GArray containing the TpChannel features that should be prepared on `channel` .

Changed in 0.13.6: the function's signature was previously wrong; it expected an object instance as its first parameter, but the type of the parameter was the type of the interface vtable.

#### Parameters

self | a client channel factory |
channel | a TpChannel |

#### Returns

a newly allocated GArray.

[transfer full][element-type GQuark]

Since: 0.13.3

## Types and Values

### TpClientChannelFactory

    typedef struct _TpClientChannelFactory TpClientChannelFactory;

Opaque typedef representing a GObject that implements the `TP_TYPE_CLIENT_CHANNEL_FACTORY` interface.

Since: 0.13.6

### struct TpClientChannelFactoryInterface

    struct TpClientChannelFactoryInterface {
        GTypeInterface parent;

        TpChannel * (* create_channel) (TpClientChannelFactoryInterface *self,
            TpConnection *conn,
            const gchar *path,
            GHashTable *properties,
            GError **error);

        GArray * (* dup_channel_features) (TpClientChannelFactoryInterface *self,
            TpChannel *channel);

        TpChannel *(*obj_create_channel) (TpClientChannelFactory *self,
            TpConnection *conn,
            const gchar *path,
            GHashTable *properties,
            GError **error);

        GArray *(*obj_dup_channel_features) (TpClientChannelFactory *self,
            TpChannel *channel);
    };

Interface for a channel factory

#### Members

GTypeInterface `parent`; | the parent |
`create_channel` () | obsolete version of `obj_create_channel` which does not receive the object instance as an argument |
`dup_channel_features` () | obsolete version of `obj_dup_channel_features` which does not receive the object instance as an argument |
`obj_create_channel` () | virtual method used to create channels; see `tp_client_channel_factory_create_channel()` |
`obj_dup_channel_features` () | virtual method returning channel features that have to be prepared on newly created channels; see `tp_client_channel_factory_dup_channel_features()` |

Since: 0.13.2