This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.
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
Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.
The members of this group have handles which are specific
to this channel, and are not valid as general-purpose
handles on the connection. Depending on the channel, it
may be possible to check the
Connection managers must ensure that any given handle is not simultaneously a general-purpose handle and a channel-specific handle.
Emitted whenever the
Emitted whenever the
Clients can assume this signal is emitted by the Connection Manager
if the
The reason for a set of handles to move to one of
No reason was provided for this change.
In particular, this reason SHOULD be used when representing users joining a named chatroom in the usual way, users leaving a chatroom by their own request, and normal termination of a StreamedMedia call by the remote user.
If the im.telepathy.v1.Error.Terminated
.
If the SelfHandle is removed from a group for this reason and
the actor is also the SelfHandle, the equivalent D-Bus error is
im.telepathy.v1.Error.Cancelled
.
The change is due to a user going offline. Also used when user is already offline, but this wasn't known previously.
If a one-to-one StreamedMedia call fails because the
contact being called is offline, the connection manager
SHOULD indicate this by removing both the
If a handle is removed from a group for this reason, the
equivalent D-Bus error is
im.telepathy.v1.Error.Offline
.
The change is due to a kick operation.
If the im.telepathy.v1.Error.Channel.Kicked
.
The change is due to a busy indication.
If a one-to-one StreamedMedia call fails because the
contact being called is busy, the connection manager
SHOULD indicate this by removing both the
If the im.telepathy.v1.Error.Busy
.
The change is due to a kick+ban operation.
If the im.telepathy.v1.Error.Channel.Banned
.
The change is because the requested contact does not exist.
For instance, if the user invites a nonexistent contact to a chatroom or attempts to call a nonexistent contact, this could be indicated by the CM adding that contact's handle to remote-pending for reason None or Invited, then removing it for reason Invalid_Contact. In the case of a 1-1 StreamedMedia call, the CM SHOULD remove the self handle from the Group in the same signal.
If a contact is removed from a group for this reason, the
equivalent D-Bus error is
im.telepathy.v1.Error.DoesNotExist
.
The change is because the requested contact did not respond.
If a one-to-one StreamedMedia call fails because the
contact being called did not respond, or the local user
did not respond to an incoming call, the connection
manager SHOULD indicate this by removing both the
If a contact is removed from a group for this reason, the
equivalent D-Bus error is
im.telepathy.v1.Error.NoAnswer
.
The change is because a contact's unique identifier changed.
There must be exactly one handle in the removed set and exactly
one handle in one of the added sets. The
The change is because there was no permission to contact the requested handle.
If a contact is removed from a group for this reason, the
equivalent D-Bus error is
im.telepathy.v1.Error.PermissionDenied
.
If members are removed with this reason code, the change is because the group has split into unconnected parts which can only communicate within themselves (e.g. netsplits on IRC use this reason code).
If members are added with this reason code, the change is because
unconnected parts of the group have rejoined. If this channel
carries messages (e.g.
Note that from the added contacts' perspective, they have been in the group all along, and the contacts we indicate to be in the group (including the local user) have just rejoined the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation.
The
Information about the change, which may include the following well-known keys:
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.
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.
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.
Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists.
All channel-specific handles that are mentioned in this signal
MUST be represented in the value of the
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.
If the
Accordingly, connection managers SHOULD support
doing this, regardless of the value of
Removing any contact from the local pending list is always
allowed. Removing contacts other than the
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
The reason code may be ignored if the underlying protocol is unable to represent the given reason.
Interface for channels which have multiple members, and where the members of the channel can change during its lifetime. Your presence in the channel cannot be presumed by the channel's existence (for example, a channel you may request membership of but your request may not be granted).
This interface implements three lists: a list of current members
(
If the
Addition of members to the channel may be requested by using
Removal of contacts from the channel may be requested by using
It should not be presumed that the requester of a channel implementing this interface is immediately granted membership, or indeed that they are a member at all, unless they appear in the list. They may, for instance, be placed into the remote pending list until a connection has been established or the request acknowledged remotely.
If the local user joins a Group channel whose members or other state cannot be discovered until the user joins (e.g. many chat room implementations), the connection manager should ensure that the channel is, as far as possible, in a consistent state before adding the local contact to the members set; until this happens, the local contact should be in the remote-pending set. For instance, if the connection manager queries the server to find out the initial members list for the channel, it should leave the local contact in the remote-pending set until it has finished receiving the initial members list.
If the protocol provides no reliable way to tell whether the complete initial members list has been received yet, the connection manager should make a best-effort attempt to wait for the full list (in the worst case, waiting for a suitable arbitrary timeout) rather than requiring user interfaces to do so on its behalf.