## Group interface on Channels

Group interface on Channels — client-side wrappers for the Group interface

## Synopsis

    #include <telepathy-glib/channel.h>

    gboolean            tp_cli_channel_interface_group_run_add_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_all_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Members,
                                                             GArray **out_Local_Pending,
                                                             GArray **out_Remote_Pending,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_group_flags
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint *out_Group_Flags,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_handle_owners
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Handles,
                                                             GArray **out_Owners,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_local_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_local_pending_members_with_info
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GPtrArray **out_Info,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_remote_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_get_self_handle
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint *out_Self_Handle,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_remove_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             GError **error,
                                                             GMainLoop **loop);
    gboolean            tp_cli_channel_interface_group_run_remove_members_with_reason
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             guint in_Reason,
                                                             GError **error,
                                                             GMainLoop **loop);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_add_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             tp_cli_channel_interface_group_callback_for_add_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_all_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_all_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_group_flags
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_group_flags callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_handle_owners
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Handles,
                                                             tp_cli_channel_interface_group_callback_for_get_handle_owners callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_local_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_local_pending_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_local_pending_members_with_info
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_remote_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_remote_pending_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_self_handle
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_self_handle callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_remove_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             tp_cli_channel_interface_group_callback_for_remove_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    TpProxyPendingCall * tp_cli_channel_interface_group_call_remove_members_with_reason
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             guint in_Reason,
                                                             tp_cli_channel_interface_group_callback_for_remove_members_with_reason callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_add_members)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_all_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Members,
                                                             const GArray *out_Local_Pending,
                                                             const GArray *out_Remote_Pending,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_group_flags)
                                                            (TpChannel *proxy,
                                                             guint out_Group_Flags,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_handle_owners)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Owners,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_local_pending_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info)
                                                            (TpChannel *proxy,
                                                             const GPtrArray *out_Info,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_remote_pending_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_get_self_handle)
                                                            (TpChannel *proxy,
                                                             guint out_Self_Handle,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_remove_members)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_callback_for_remove_members_with_reason)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_group_flags_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_group_flags_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_members_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_members_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_members_changed_detailed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_members_changed_detailed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    void                (*tp_cli_channel_interface_group_signal_callback_group_flags_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_Added,
                                                             guint arg_Removed,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_signal_callback_members_changed)
                                                            (TpChannel *proxy,
                                                             const gchar *arg_Message,
                                                             const GArray *arg_Added,
                                                             const GArray *arg_Removed,
                                                             const GArray *arg_Local_Pending,
                                                             const GArray *arg_Remote_Pending,
                                                             guint arg_Actor,
                                                             guint arg_Reason,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_signal_callback_members_changed_detailed)
                                                            (TpChannel *proxy,
                                                             const GArray *arg_Added,
                                                             const GArray *arg_Removed,
                                                             const GArray *arg_Local_Pending,
                                                             const GArray *arg_Remote_Pending,
                                                             GHashTable *arg_Details,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_handle_owners_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_handle_owners_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_self_handle_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_self_handle_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);
    void                (*tp_cli_channel_interface_group_signal_callback_handle_owners_changed)
                                                            (TpChannel *proxy,
                                                             GHashTable *arg_Added,
                                                             const GArray *arg_Removed,
                                                             gpointer user_data,
                                                             GObject *weak_object);
    void                (*tp_cli_channel_interface_group_signal_callback_self_handle_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_Self_Handle,
                                                             gpointer user_data,
                                                             GObject *weak_object);

## Description

Many Telepathy Channel objects can be seen as representing groups or sets of contacts. The Telepathy specification represents this by a common interface, Group. This section documents the auto-generated C wrappers for the Group interface.

Contacts can be in four states:

* in the group (the "members" set)

* "local pending" (waiting to be added to the group by the local client calling `AddMembers()`)

* "remote pending" (waiting to be added to the group by some other action, probably by someone else)

* no relationship with the group at all

For instance, chatrooms implement the Group interface. Contacts in the chatroom are members, and contacts who we've invited to the group, or contacts who've requested permission to join, are remote pending. If the local user has been invited by another contact, they will appear in the local-pending set until they accept or decline the invitation.

## Details

### tp_cli_channel_interface_group_run_add_members ()

    gboolean            tp_cli_channel_interface_group_run_add_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             GError **error,
                                                             GMainLoop **loop);

Call the method AddMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.</p> <p>A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT <tp:member-ref>GroupFlags</tp:member-ref> to see in which cases this message should be provided.</p> <p>Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.</p>

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to invite to the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_all_members ()

    gboolean            tp_cli_channel_interface_group_run_get_all_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Members,
                                                             GArray **out_Local_Pending,
                                                             GArray **out_Remote_Pending,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_all_members` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including Members, RemotePendingMembers and LocalPendingMembers instead, falling back to this method and GetLocalPendingMembersWithInfo if necessary.

Call the method GetAllMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns arrays of all current, local and remote pending channel members.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Members` : | Used to return an 'out' argument if `TRUE` is returned: array of handles of current members
`out_Local_Pending` : | Used to return an 'out' argument if `TRUE` is returned: array of handles of local pending members
`out_Remote_Pending` : | Used to return an 'out' argument if `TRUE` is returned: array of handles of remote pending members
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_group_flags ()

    gboolean            tp_cli_channel_interface_group_run_get_group_flags
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint *out_Group_Flags,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_group_flags` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including GroupFlags instead, falling back to this method if necessary.

Call the method GetGroupFlags and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns the value of the <tp:member-ref>GroupFlags</tp:member-ref> property.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Group_Flags` : | Used to return an 'out' argument if `TRUE` is returned: The value of the GroupFlags property
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_handle_owners ()

    gboolean            tp_cli_channel_interface_group_run_get_handle_owners
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Handles,
                                                             GArray **out_Owners,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_handle_owners` is deprecated and should not be used in newly-written code. Clients should use the HandleOwners property and HandleOwnersChanged signal if Channel_Group_Flag_Properties is present.

Call the method GetHandleOwners and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on the channel, then the handles of the group members are specific to this channel, and are not meaningful in a connection-wide context such as contact lists. This method allows you to find the owner of the handle if it can be discovered in this channel, or 0 if the owner is not available.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Handles` : | Used to pass an 'in' argument: A list of integer handles representing members of the channel
`out_Owners` : | Used to return an 'out' argument if `TRUE` is returned: An array of integer handles representing the owner handles of the given room members, in the same order, or 0 if the owner is not available
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_local_pending_members ()

    gboolean            tp_cli_channel_interface_group_run_get_local_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_local_pending_members` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Call the method GetLocalPendingMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns the To_Be_Added handle (only) for each structure in the <tp:member-ref>LocalPendingMembers</tp:member-ref> property.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Handles` : | Used to return an 'out' argument if `TRUE` is returned: (Undocumented)
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_local_pending_members_with_info ()

    gboolean            tp_cli_channel_interface_group_run_get_local_pending_members_with_info
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GPtrArray **out_Info,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_local_pending_members_with_info` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Call the method GetLocalPendingMembersWithInfo and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns the <tp:member-ref>LocalPendingMembers</tp:member-ref> property.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default

`out_Info` :

Used to return an 'out' argument if `TRUE` is returned: An array of structs containing: <ul> <li> A handle representing the contact requesting channel membership </li> <li> A handle representing the contact making the request, or 0 if unknown </li> <li> The reason for the request: one of the values of <tp:type>Channel_Group_Change_Reason</tp:type> </li> <li> A string message containing the reason for the request if any (or blank if none) </li> </ul>

`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_members ()

    gboolean            tp_cli_channel_interface_group_run_get_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_members` is deprecated and should not be used in newly-written code. Use the Members property, if Channel_Group_Flag_Properties is present.

Call the method GetMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns the <tp:member-ref>Members</tp:member-ref> property.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Handles` : | Used to return an 'out' argument if `TRUE` is returned: (Undocumented)
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_remote_pending_members ()

    gboolean            tp_cli_channel_interface_group_run_get_remote_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             GArray **out_Handles,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_remote_pending_members` is deprecated and should not be used in newly-written code. Use the RemotePendingMembers property, if Channel_Group_Flag_Properties is present.

Call the method GetRemotePendingMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns an array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Handles` : | Used to return an 'out' argument if `TRUE` is returned: (Undocumented)
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_get_self_handle ()

    gboolean            tp_cli_channel_interface_group_run_get_self_handle
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             guint *out_Self_Handle,
                                                             GError **error,
                                                             GMainLoop **loop);

### Warning

`tp_cli_channel_interface_group_run_get_self_handle` is deprecated and should not be used in newly-written code. Clients should retrieve the SelfHandle property using GetAll instead, if Channel_Group_Flag_Properties is present.

Call the method GetSelfHandle and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

Returns the value of the <tp:member-ref>SelfHandle</tp:member-ref> property.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`out_Self_Handle` : | Used to return an 'out' argument if `TRUE` is returned: (Undocumented)
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_remove_members ()

    gboolean            tp_cli_channel_interface_group_run_remove_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             GError **error,
                                                             GMainLoop **loop);

Call the method RemoveMembers and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Requests the removal of contacts from a channel, reject their request for channel membership on the pending local list, or rescind their invitation on the pending remote list.</p> <p>If the <tp:member-ref>SelfHandle</tp:member-ref> is in a Group, it can be removed via this method, in order to leave the group gracefully. This is the recommended way to leave a chatroom, close or reject a <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> call, and so on.</p> <p>Accordingly, connection managers SHOULD support doing this, regardless of the value of <tp:member-ref>GroupFlags</tp:member-ref>. If doing so fails with PermissionDenied, this is considered to a bug in the connection manager, but clients MUST recover by falling back to closing the channel with the <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel">Close</tp:dbus-ref> method.</p> <p>Removing any contact from the local pending list is always allowed. Removing contacts other than the <tp:member-ref>SelfHandle</tp:member-ref> from the channel's members is allowed if and only if Channel_Group_Flag_Can_Remove is in the <tp:member-ref>GroupFlags</tp:member-ref>, while removing contacts other than the <tp:member-ref>SelfHandle</tp:member-ref> from the remote pending list is allowed if and only if Channel_Group_Flag_Can_Rescind is in the <tp:member-ref>GroupFlags</tp:member-ref>.</p> <p>A message may be provided along with the request, which will be sent to the server if supported. See the Channel_Group_Flag_Message_Remove, Channel_Group_Flag_Message_Depart, Channel_Group_Flag_Message_Reject and Channel_Group_Flag_Message_Rescind <tp:member-ref>GroupFlags</tp:member-ref> to see in which cases this message should be provided.</p>

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to remove from the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_run_remove_members_with_reason ()

    gboolean            tp_cli_channel_interface_group_run_remove_members_with_reason
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             guint in_Reason,
                                                             GError **error,
                                                             GMainLoop **loop);

Call the method RemoveMembersWithReason and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

As <tp:member-ref>RemoveMembers</tp:member-ref>, but a reason code may be provided where appropriate. The reason code may be ignored if the underlying protocol is unable to represent the given reason.

`proxy` : | A TpChannel or subclass
`timeout_ms` : | Timeout in milliseconds, or -1 for default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to remove from the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`in_Reason` : | Used to pass an 'in' argument: A reason for the change
`error` : | If not `NULL`, used to return errors if `FALSE` is returned
`loop` : | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED`
Returns : | TRUE on success, FALSE and sets `error` on error

### tp_cli_channel_interface_group_call_add_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_add_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             tp_cli_channel_interface_group_callback_for_add_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

Start a AddMembers method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.</p> <p>A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT <tp:member-ref>GroupFlags</tp:member-ref> to see in which cases this message should be provided.</p> <p>Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.</p>

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to invite to the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_all_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_all_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_all_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_all_members` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including Members, RemotePendingMembers and LocalPendingMembers instead, falling back to this method and GetLocalPendingMembersWithInfo if necessary.

Start a GetAllMembers method call.

Returns arrays of all current, local and remote pending channel members.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_group_flags ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_group_flags
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_group_flags callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_group_flags` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including GroupFlags instead, falling back to this method if necessary.

Start a GetGroupFlags method call.

Returns the value of the <tp:member-ref>GroupFlags</tp:member-ref> property.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_handle_owners ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_handle_owners
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Handles,
                                                             tp_cli_channel_interface_group_callback_for_get_handle_owners callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_handle_owners` is deprecated and should not be used in newly-written code. Clients should use the HandleOwners property and HandleOwnersChanged signal if Channel_Group_Flag_Properties is present.

Start a GetHandleOwners method call.

If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on the channel, then the handles of the group members are specific to this channel, and are not meaningful in a connection-wide context such as contact lists. This method allows you to find the owner of the handle if it can be discovered in this channel, or 0 if the owner is not available.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Handles` : | Used to pass an 'in' argument: A list of integer handles representing members of the channel
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_local_pending_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_local_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_local_pending_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_local_pending_members` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Start a GetLocalPendingMembers method call.

Returns the To_Be_Added handle (only) for each structure in the <tp:member-ref>LocalPendingMembers</tp:member-ref> property.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_local_pending_members_with_info ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_local_pending_members_with_info
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_local_pending_members_with_info` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Start a GetLocalPendingMembersWithInfo method call.

Returns the <tp:member-ref>LocalPendingMembers</tp:member-ref> property.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_members` is deprecated and should not be used in newly-written code. Use the Members property, if Channel_Group_Flag_Properties is present.

Start a GetMembers method call.

Returns the <tp:member-ref>Members</tp:member-ref> property.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_remote_pending_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_remote_pending_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_remote_pending_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_remote_pending_members` is deprecated and should not be used in newly-written code. Use the RemotePendingMembers property, if Channel_Group_Flag_Properties is present.

Start a GetRemotePendingMembers method call.

Returns an array of handles representing contacts who have been invited to the channel and are awaiting remote approval.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_get_self_handle ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_get_self_handle
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             tp_cli_channel_interface_group_callback_for_get_self_handle callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_call_get_self_handle` is deprecated and should not be used in newly-written code. Clients should retrieve the SelfHandle property using GetAll instead, if Channel_Group_Flag_Properties is present.

Start a GetSelfHandle method call.

Returns the value of the <tp:member-ref>SelfHandle</tp:member-ref> property.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_remove_members ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_remove_members
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             tp_cli_channel_interface_group_callback_for_remove_members callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

Start a RemoveMembers method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Requests the removal of contacts from a channel, reject their request for channel membership on the pending local list, or rescind their invitation on the pending remote list.</p> <p>If the <tp:member-ref>SelfHandle</tp:member-ref> is in a Group, it can be removed via this method, in order to leave the group gracefully. This is the recommended way to leave a chatroom, close or reject a <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> call, and so on.</p> <p>Accordingly, connection managers SHOULD support doing this, regardless of the value of <tp:member-ref>GroupFlags</tp:member-ref>. If doing so fails with PermissionDenied, this is considered to a bug in the connection manager, but clients MUST recover by falling back to closing the channel with the <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel">Close</tp:dbus-ref> method.</p> <p>Removing any contact from the local pending list is always allowed. Removing contacts other than the <tp:member-ref>SelfHandle</tp:member-ref> from the channel's members is allowed if and only if Channel_Group_Flag_Can_Remove is in the <tp:member-ref>GroupFlags</tp:member-ref>, while removing contacts other than the <tp:member-ref>SelfHandle</tp:member-ref> from the remote pending list is allowed if and only if Channel_Group_Flag_Can_Rescind is in the <tp:member-ref>GroupFlags</tp:member-ref>.</p> <p>A message may be provided along with the request, which will be sent to the server if supported. See the Channel_Group_Flag_Message_Remove, Channel_Group_Flag_Message_Depart, Channel_Group_Flag_Message_Reject and Channel_Group_Flag_Message_Rescind <tp:member-ref>GroupFlags</tp:member-ref> to see in which cases this message should be provided.</p>

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to remove from the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_call_remove_members_with_reason ()

    TpProxyPendingCall * tp_cli_channel_interface_group_call_remove_members_with_reason
                                                            (TpChannel *proxy,
                                                             gint timeout_ms,
                                                             const GArray *in_Contacts,
                                                             const gchar *in_Message,
                                                             guint in_Reason,
                                                             tp_cli_channel_interface_group_callback_for_remove_members_with_reason callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object);

Start a RemoveMembersWithReason method call.

As <tp:member-ref>RemoveMembers</tp:member-ref>, but a reason code may be provided where appropriate. The reason code may be ignored if the underlying protocol is unable to represent the given reason.

`proxy` : | the TpProxy
`timeout_ms` : | the timeout in milliseconds, or -1 to use the default
`in_Contacts` : | Used to pass an 'in' argument: An array of contact handles to remove from the channel
`in_Message` : | Used to pass an 'in' argument: A string message, which can be blank if desired
`in_Reason` : | Used to pass an 'in' argument: A reason for the change
`callback` : | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking
`user_data` : | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL`
`destroy` : | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL`
`weak_object` : | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL`
Returns : | a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_channel_interface_group_callback_for_add_members ()

    void                (*tp_cli_channel_interface_group_callback_for_add_members)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Signature of the callback called when a AddMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_all_members ()

    void                (*tp_cli_channel_interface_group_callback_for_get_all_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Members,
                                                             const GArray *out_Local_Pending,
                                                             const GArray *out_Remote_Pending,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_all_members` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including Members, RemotePendingMembers and LocalPendingMembers instead, falling back to this method and GetLocalPendingMembersWithInfo if necessary.

Signature of the callback called when a GetAllMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Members` : | Used to return an 'out' argument if `error` is `NULL`: array of handles of current members
`out_Local_Pending` : | Used to return an 'out' argument if `error` is `NULL`: array of handles of local pending members
`out_Remote_Pending` : | Used to return an 'out' argument if `error` is `NULL`: array of handles of remote pending members
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_group_flags ()

    void                (*tp_cli_channel_interface_group_callback_for_get_group_flags)
                                                            (TpChannel *proxy,
                                                             guint out_Group_Flags,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_group_flags` is deprecated and should not be used in newly-written code. Use GetAll on the D-Bus Properties D-Bus interface to get properties including GroupFlags instead, falling back to this method if necessary.

Signature of the callback called when a GetGroupFlags method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Group_Flags` : | Used to return an 'out' argument if `error` is `NULL`: The value of the GroupFlags property
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_handle_owners ()

    void                (*tp_cli_channel_interface_group_callback_for_get_handle_owners)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Owners,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_handle_owners` is deprecated and should not be used in newly-written code. Clients should use the HandleOwners property and HandleOwnersChanged signal if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetHandleOwners method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Owners` : | Used to return an 'out' argument if `error` is `NULL`: An array of integer handles representing the owner handles of the given room members, in the same order, or 0 if the owner is not available
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_local_pending_members ()

    void                (*tp_cli_channel_interface_group_callback_for_get_local_pending_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_local_pending_members` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetLocalPendingMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Handles` : | Used to return an 'out' argument if `error` is `NULL`: (Undocumented)
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info ()

    void                (*tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info)
                                                            (TpChannel *proxy,
                                                             const GPtrArray *out_Info,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_local_pending_members_with_info` is deprecated and should not be used in newly-written code. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetLocalPendingMembersWithInfo method call succeeds or fails.

`proxy` : | the proxy on which the call was made

`out_Info` :

Used to return an 'out' argument if `error` is `NULL`: An array of structs containing: <ul> <li> A handle representing the contact requesting channel membership </li> <li> A handle representing the contact making the request, or 0 if unknown </li> <li> The reason for the request: one of the values of <tp:type>Channel_Group_Change_Reason</tp:type> </li> <li> A string message containing the reason for the request if any (or blank if none) </li> </ul>

`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_members ()

    void                (*tp_cli_channel_interface_group_callback_for_get_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_members` is deprecated and should not be used in newly-written code. Use the Members property, if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Handles` : | Used to return an 'out' argument if `error` is `NULL`: (Undocumented)
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_remote_pending_members ()

    void                (*tp_cli_channel_interface_group_callback_for_get_remote_pending_members)
                                                            (TpChannel *proxy,
                                                             const GArray *out_Handles,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_remote_pending_members` is deprecated and should not be used in newly-written code. Use the RemotePendingMembers property, if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetRemotePendingMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Handles` : | Used to return an 'out' argument if `error` is `NULL`: (Undocumented)
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_get_self_handle ()

    void                (*tp_cli_channel_interface_group_callback_for_get_self_handle)
                                                            (TpChannel *proxy,
                                                             guint out_Self_Handle,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

### Warning

`tp_cli_channel_interface_group_callback_for_get_self_handle` is deprecated and should not be used in newly-written code. Clients should retrieve the SelfHandle property using GetAll instead, if Channel_Group_Flag_Properties is present.

Signature of the callback called when a GetSelfHandle method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`out_Self_Handle` : | Used to return an 'out' argument if `error` is `NULL`: (Undocumented)
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_remove_members ()

    void                (*tp_cli_channel_interface_group_callback_for_remove_members)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Signature of the callback called when a RemoveMembers method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_callback_for_remove_members_with_reason ()

    void                (*tp_cli_channel_interface_group_callback_for_remove_members_with_reason)
                                                            (TpChannel *proxy,
                                                             const GError *error,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Signature of the callback called when a RemoveMembersWithReason method call succeeds or fails.

`proxy` : | the proxy on which the call was made
`error` : | `NULL` on success, or an error on failure
`user_data` : | user-supplied data
`weak_object` : | user-supplied object

### tp_cli_channel_interface_group_connect_to_group_flags_changed ()

    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_group_flags_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_group_flags_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal GroupFlagsChanged.

Emitted when the flags as returned by <tp:member-ref>GetGroupFlags</tp:member-ref> are changed. The user interface should be updated as appropriate.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_interface_group_connect_to_members_changed ()

    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_members_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_members_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal MembersChanged.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. There may also be a message from the server regarding this change, which may be displayed to the user if desired.</p> <p>All channel-specific handles that are mentioned in this signal MUST be represented in the value of the <tp:member-ref>HandleOwners</tp:member-ref> property. In practice, this will mean that <tp:member-ref>HandleOwnersChanged</tp:member-ref> is emitted <em>before</em> emitting a MembersChanged signal in which channel-specific handles are added, but that it is emitted <em>after</em> emitting a MembersChanged signal in which channel-specific handles are removed.</p>

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_interface_group_connect_to_members_changed_detailed ()

    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_members_changed_detailed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_members_changed_detailed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal MembersChangedDetailed.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. This signal provides a superset of the information provided by <tp:member-ref>MembersChanged</tp:member-ref>; if the channel's <tp:member-ref>GroupFlags</tp:member-ref> contains Members_Changed_Detailed, then clients may listen exclusively to this signal in preference to that signal.</p> <p>All channel-specific handles that are mentioned in this signal MUST be represented in the value of the <tp:member-ref>HandleOwners</tp:member-ref> property. In practice, this will mean that <tp:member-ref>HandleOwnersChanged</tp:member-ref> is emitted <em>before</em> emitting a MembersChangedDetailed signal in which channel-specific handles are added, but that it is emitted <em>after</em> emitting a MembersChangedDetailed signal in which channel-specific handles are removed.</p>

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_interface_group_signal_callback_group_flags_changed ()

    void                (*tp_cli_channel_interface_group_signal_callback_group_flags_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_Added,
                                                             guint arg_Removed,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal GroupFlagsChanged.

`proxy` : | The proxy on which `tp_cli_channel_interface_group_connect_to_group_flags_changed()` was called
`arg_Added` : | A bitwise OR of the flags which have been set
`arg_Removed` : | A bitwise OR of the flags which have been cleared
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_interface_group_signal_callback_members_changed ()

    void                (*tp_cli_channel_interface_group_signal_callback_members_changed)
                                                            (TpChannel *proxy,
                                                             const gchar *arg_Message,
                                                             const GArray *arg_Added,
                                                             const GArray *arg_Removed,
                                                             const GArray *arg_Local_Pending,
                                                             const GArray *arg_Remote_Pending,
                                                             guint arg_Actor,
                                                             guint arg_Reason,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal MembersChanged.

`proxy` : | The proxy on which `tp_cli_channel_interface_group_connect_to_members_changed()` was called
`arg_Message` : | A string message from the server, or blank if not
`arg_Added` : | A list of members added to the channel
`arg_Removed` : | A list of members removed from the channel
`arg_Local_Pending` : | A list of members who are pending local approval
`arg_Remote_Pending` : | A list of members who are pending remote approval
`arg_Actor` : | The contact handle of the person who made the change, or 0 if not known
`arg_Reason` : | A reason for the change
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_interface_group_signal_callback_members_changed_detailed ()

    void                (*tp_cli_channel_interface_group_signal_callback_members_changed_detailed)
                                                            (TpChannel *proxy,
                                                             const GArray *arg_Added,
                                                             const GArray *arg_Removed,
                                                             const GArray *arg_Local_Pending,
                                                             const GArray *arg_Remote_Pending,
                                                             GHashTable *arg_Details,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal MembersChangedDetailed.

`proxy` : | The proxy on which `tp_cli_channel_interface_group_connect_to_members_changed_detailed()` was called
`arg_Added` : | A list of members added to the channel
`arg_Removed` : | A list of members removed from the channel
`arg_Local_Pending` : | A list of members who are pending local approval
`arg_Remote_Pending` : | A list of members who are pending remote approval

`arg_Details` :

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Information about the change, which may include the following well-known keys:</p> <dl> <dt>actor (u — <tp:type>Contact_Handle</tp:type>)</dt> <dd>The contact handle of the person who made the change; 0 or omitted if unknown or not applicable.</dd> <dt>change-reason (u — <tp:type>Channel_Group_Change_Reason</tp:type>)</dt> <dd>A reason for the change.</dd> <dt>contact-ids (a{us} — <tp:type>Handle_Identifier_Map</tp:type>)</dt> <dd> <p>The string identifiers for handles mentioned in this signal, to give clients the minimal information necessary to react to the event without waiting for round-trips. Connection managers SHOULD include the identifiers for members added to the group and for the actor (if any); they MAY omit the identifiers for handles which have been removed from the group.</p> <tp:rationale> <p>On IRC, an event such as a netsplit could cause the vast majority of a channel to leave. Given that clients should already know the identifiers of a channel's members, including potentially hundreds of strings in the netsplit signal is unnecessary.</p> </tp:rationale> <p>Clients MUST NOT assume that the presence or absence of a handle in this mapping is meaningful. This mapping is merely an optimization for round-trip reduction, and connection managers MAY add additional handles, omit some handles, or omit the mapping completely.</p> </dd> <dt>message (s)</dt> <dd>A string message from the server regarding the change</dd> <dt>error (s — <tp:type>DBus_Error_Name</tp:type>)</dt> <dd>A (possibly implementation-specific) DBus error describing the change, providing more specific information than the <tp:type>Channel_Group_Change_Reason</tp:type> enum allows. This MUST only be present if it is strictly more informative than 'change-reason'; if present, 'change-reason' MUST be set to the closest available reason. <tp:rationale> A SIP connection manager might want to signal &quot;402 Payment required&quot; as something more specific than Error or Permission_Denied so that a SIP-aware UI could handle it specially; including a namespaced error permits this to be done without <tp:type>Channel_Group_Change_Reason</tp:type> being extended to encompass every error any CM ever wants to report. </tp:rationale> </dd> <dt>debug-message (s)</dt> <dd>Debugging information on the change. SHOULD NOT be shown to users in normal circumstances.</dd> </dl>

`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_interface_group_connect_to_handle_owners_changed ()

    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_handle_owners_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_handle_owners_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal HandleOwnersChanged.

Emitted whenever the <tp:member-ref>HandleOwners</tp:member-ref> property changes.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_interface_group_connect_to_self_handle_changed ()

    TpProxySignalConnection * tp_cli_channel_interface_group_connect_to_self_handle_changed
                                                            (TpChannel *proxy,
                                                             tp_cli_channel_interface_group_signal_callback_self_handle_changed callback,
                                                             gpointer user_data,
                                                             GDestroyNotify destroy,
                                                             GObject *weak_object,
                                                             GError **error);

Connect a handler to the signal SelfHandleChanged.

Emitted whenever the <tp:member-ref>SelfHandle</tp:member-ref> property changes.

`proxy` : | A TpChannel or subclass
`callback` : | Callback to be called when the signal is received
`user_data` : | User-supplied data for the callback
`destroy` : | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL`
`weak_object` : | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected
`error` : | If not `NULL`, used to raise an error if `NULL` is returned
Returns : | a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_channel_interface_group_signal_callback_handle_owners_changed ()

    void                (*tp_cli_channel_interface_group_signal_callback_handle_owners_changed)
                                                            (TpChannel *proxy,
                                                             GHashTable *arg_Added,
                                                             const GArray *arg_Removed,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal HandleOwnersChanged.

`proxy` : | The proxy on which `tp_cli_channel_interface_group_connect_to_handle_owners_changed()` was called
`arg_Added` : | A map from channel-specific handles to their owners, in which the keys include all the handles that were added to the keys of the HandleOwners property, and all the handles in that property whose owner has changed
`arg_Removed` : | The channel-specific handles that were removed from the keys of the HandleOwners property, as a result of the contact leaving this group in a previous <tp:member-ref>MembersChanged</tp:member-ref> signal
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

### tp_cli_channel_interface_group_signal_callback_self_handle_changed ()

    void                (*tp_cli_channel_interface_group_signal_callback_self_handle_changed)
                                                            (TpChannel *proxy,
                                                             guint arg_Self_Handle,
                                                             gpointer user_data,
                                                             GObject *weak_object);

Represents the signature of a callback for the signal SelfHandleChanged.

`proxy` : | The proxy on which `tp_cli_channel_interface_group_connect_to_self_handle_changed()` was called
`arg_Self_Handle` : | The new value of the SelfHandle property.
`user_data` : | User-supplied data
`weak_object` : | User-supplied weakly referenced object

## See Also

TpChannel