From 40c07970e192b174cdcbe5d029b593a28382d166 Mon Sep 17 00:00:00 2001
From: Simon McVittie
Request a channel satisfying the specified type and communicating + with the contact, room, list etc. indicated by the given + handle_type and handle. The handle_type and handle may both be + zero to request the creation of a new, empty channel, which may + or may not be possible, depending on the protocol and channel + type.
+ +On success, the returned channel will always be of the requested + type (i.e. implement the requested channel-type interface).
+ +If a new, empty channel is requested, on success the returned + channel will always be an "anonymous" channel for which the type + and handle are both zero.
+ +If a channel to a contact, room etc. is requested, on success, the + returned channel may either be a new or existing channel to + the requested entity (i.e. its GetHandle() returns the + requested handle type and handle), or a newly created "anonymous" + channel associated with the requested handle in some + implementation-specific way.
+ +For example, for a contact handle, the returned channel + might be "anonymous", but implement the groups interface and have + the requested contact already present among the members.
+ +If the request cannot be satisfied, an error is raised and no + channel is created.
Contacts, rooms, and server-stored lists (such as subscribed contacts, block lists, or allow lists) on a service are all represented by - immutable handles, which are unsigned non-zero integers which are valid - only for the lifetime of the connection object, and are used throughout the - protocol where these entities are represented, allowing simple testing of - equality within clients. Handles have per-type uniqueness, meaning that + immutable handles, which are unsigned non-zero integers which are + valid only for the lifetime of the connection object, and are used + throughout the protocol where these entities are represented, allowing + simple testing of equality within clients.
+ +Zero as a handle value is sometimes used as a "null" value to mean + the absence of a contact, room, etc.
+ +Handles have per-type uniqueness, meaning that every (handle type, handle number) tuple is guaranteed to be unique within a connection and that a handle alone (without its type) is meaningless or ambiguous. Connection manager implementations should reference count these -- cgit v1.2.3