Types and Values

Object Hierarchy

Known Implementations

Includes

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

Description

A channel manager is attached to a connection. It carries out channel
requests from the connection, and responds to channel-related events on the
underlying network connection, for particular classes of channel (for
example, incoming and outgoing calls, respectively). It also tracks
currently-open channels of the relevant kinds.

The connection has an array of channel managers. In response to a call to
CreateChannel or RequestChannel, the channel request is offered to each
channel manager in turn, until one accepts the request. In a trivial
implementation there might be a single channel manager which handles all
requests and all incoming events, but in general, there will be multiple
channel managers handling different types of channel.

For example, at the time of writing, Gabble has a roster channel manager
which handles contact lists and groups, an IM channel manager which
handles one-to-one messaging, a MUC channel manager which handles
multi-user chat rooms, the index of chat rooms and MUC tubes, a media
channel manager which handles VoIP calls, and a 1-1 tubes channel manager.

Implementations should inspect the contents of request_properties
to see if
it matches a channel class handled by this manager. If so, they should
return TRUE to accept responsibility for the request, and ultimately emit
exactly one of the “new-channel”,
“request-already-satisfied” and
“request-failed” signals (including request
in
the appropriate argument).

If the implementation does not want to handle the request, it should return
FALSE to allow the request to be offered to another channel manager.

Parameters

A table mapping (const gchar *) property names to
GValue, representing the desired properties of a channel requested by a
Telepathy client. The hash table will be freed after the function returns;
if the channel manager wants to keep it around, it must copy it.

tp_channel_manager_asv_has_unknown_properties ()

Checks whether the keys of properties
are elements of one of fixed
and
allowed
. This is intended to be used by implementations of
TpChannelManagerIface.create_channel which have decided to accept a request,
to conform with the specification's requirement that unknown requested
properties must cause a request to fail, not be silently ignored.

On encountering unknown properties, this function will return TRUE, and
set error
to a GError that could be used as a D-Bus method error.

Parameters

properties

a table mapping (const gchar *) property names to GValues,
as passed to methods of TpChannelManager

Call func(manager, fixed, allowed, user_data) for
each class of channel that this instance can create (a subset of the
channel classes produced by type_foreach_channel_class
). If not
implemented, type_foreach_channel_class
is used.