The ChannelDispatcher interface is implemented in Mission Control 5.
There are no channel dispatching capabilities available in Mission Control 4.
The Channel Dispatcher is responsible for discovering and launching Telepathy clients to handle incoming channels from accounts being managed by the Account Manager and channels requested via the Channel Dispatcher (but not channels requested directly from a Connection, see Section 6.1 ― Requesting Channels).
Clients register a well-known name on the D-Bus session bus in the org.freedesktop.Telepathy.Client namespace. These are then picked up by the Channel Dispatcher which queries the appropriate properties to discover what manner of client it is. Clients may be launched via D-Bus activation if desired. A .client file is used to provide the D-Bus properties the Channel Dispatcher queries, allowing the Channel Dispatcher to only activate the client if required.
The Channel Dispatcher is available via the well-known D-Bus name org.freedesktop.Telepathy.ChannelDispatcher, which publishes an object /org/freedesktop/Telepathy/ChannelDispatcher.
These names and paths are available in the API bindings as named constants.
telepathy-glib | |
Bus Name | TP_CHANNEL_DISPATCHER_BUS_NAME |
Object Path | TP_CHANNEL_DISPATCHER_OBJECT_PATH |
The Channel Dispatcher watches the Connections known to the Account Manager and keeps track of what Clients are available to handle incoming and requested Channels from those Connections. When a new channel comes in, the Channel Dispatcher looks at the available clients, and the types of channels they handle and then selects clients to dispatch the channel to.
There are three types of Telepathy Clients: Observers, Approvers and Handlers. These are described further in Section 4.1 ― Telepathy Clients.
The Channel Dispatcher will dispatch a channel to all running or activatable Observers and Approvers with a channel filter that matches the incoming channel. The Channel Dispatcher provides the Approver with a list of suitable Handlers, from which the Approver may make a choice.
The Channel Dispatcher may also support error recovery in the case of broken or buggy clients. If a client crashes or generates an error when asked to handle the channel, the Dispatcher may attempt to use a different client instead.