Interface Protocol.DRAFT

Interface Index (Compact) | Summary | Description | Methods | Properties

Methods

IdentifyAccount (a{sv}: Parameters) s: Account_ID
NormalizeContact (s: Contact_ID) s: Normalized_Contact_ID

Properties

Interfaces as (DBus_Interface_List) Read only
Parameters a(susv) (Param_Spec_List) Read only
ConnectionInterfaces as (DBus_Interface_List) Read only
RequestableChannelClasses a(a{sv}as) (Requestable_Channel_Class_List) Read only
VCardField s Read only
EnglishName s Read only
Icon s Read only
WARNING: This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Do not include this interface in libraries that care about compatibility.
Added in 0.19.UNRELEASED. (draft 1)

Description

An object representing a protocol for which this ConnectionManager can create Connections.

Each Protocol object has the same well-known bus name as its parent ConnectionManager. Its object path is formed by taking the ConnectionManager's object path and appending '/', followed by the Protocol name with any hyphen/minus '-' converted to underscores '_'.

This is the same as the representation of protocol names in Account object paths, and in Connection object paths and bus names. For instance, telepathy-gabble and telepathy-salut would implement objects at /org/freedesktop/Telepathy/ConnectionManager/gabble/jabber and /org/freedesktop/Telepathy/ConnectionManager/salut/local_xmpp, respectively.

Methods

(Permalink)

IdentifyAccount (a{sv}: Parameters) → s: Account_ID

Parameters

Returns

  • Account_ID — s
  • An opaque string suitable for use as the account-specific part of an Account's object path. This is not necessarily globally unique, but should represent a "best-effort" identification of the account.

    For a pathological case, consider a user signing in as 'me@example.com' with 'server' set to either jabber1.example.com or jabber2.example.com. Both of these should result in me@example.com being returned from this method, even if the user can actually be signed in to those two servers simultaneously.

Return a string which uniquely identifies the account to which the given parameters would connect.

For many protocols, this would return the well-known 'account' parameter. However, for IRC the returned string would be composed from the 'account' (i.e. nickname) and 'server' parameters. AccountManager implementations can use this to form the account-specific part of an Account's object path.


Possible Errors

  • Not Implemented
  • The IdentifyAccount method is not supported by this connection manager. The caller SHOULD fall back to deriving identification from the parameters.
(Permalink)

NormalizeContact (s: Contact_ID) → s: Normalized_Contact_ID

Parameters

  • Contact_ID — s
  • The identifier of a contact in this protocol

Returns

  • Normalized_Contact_ID — s
  • The identifier of a contact in this protocol, normalized as much as possible

Attempt to normalize the given contact ID. Where possible, this SHOULD return the same thing that would be returned by InspectHandles(RequestHandles(CONTACT, [Contact_ID])) on a connected Connection.

If full normalization requires network activity or is otherwise impossible to do without a Connection, this method SHOULD perform a best-effort normalization.

One common example of a best-effort offline normalization differing from the ideal normalization is XMPP.

On XMPP, contacts' JIDs should normally have the resource removed during normalization, but for contacts in a MUC (chatroom), the resource is an integral part of the JID - so the contact JID alice@example.com/Empathy should normalize to alice@example.com, but the in-MUC JID wonderland@conference.example.com/Alice should normalize to itself.

While online, the connection manager has enough context to know which chatrooms the user is in, and can infer from that whether to remove resources, but the best-effort normalization performed while offline does not have this context, so the best that can be done is to remove the resource from all JIDs.

This method MAY simply raise NotImplemented on some protocols.

In link-local XMPP, you can't talk to someone who isn't present on your local network, so normalizing identifiers in advance is meaningless.


Possible Errors

  • Not Implemented
  • The NormalizeContact method is not supported by this connection manager. The caller MAY recover by using the contact ID as-is.

Properties

Accessed using the org.freedesktop.DBus.Properties interface.
(Permalink)

Interfaces — as (DBus_Interface_List)

Read only

A list of interfaces supported by this Protocol object.

This property is immutable, and should not be confused with ConnectionInterfaces, which refers to the interfaces of connections to this protocol.

Connection managers with a .manager file (as described as part of the ConnectionManager interface) MUST cache this property in the protocol's section of the .manager file, using the key Interfaces. The corresponding value is a list of D-Bus interface names, each followed by a semicolon.

(Permalink)

Parameters — a(susv) (Param_Spec_List)

Read only

The parameters which must or may be provided to the RequestConnection method when connecting to the given protocol. This property is immutable.

Connection managers with a .manager file (as described as part of the ConnectionManager interface) MUST cache this property in the protocol's section of the .manager file via keys of the form param-p and default-p, as documented in the ConnectionManager interface.

(Permalink)

ConnectionInterfaces — as (DBus_Interface_List)

Read only

A list of interface names which might be in the Interfaces property of a Connection to this protocol. Whether a Connection will have all, some or none of these interfaces depends on server capabilities.

This property is immutable, and should not be confused with Interfaces.

Connection managers with a .manager file MUST cache this property in the protocol's section of the .manager file, using the key ConnectionInterfaces. The corresponding value is a list of D-Bus interface names, each followed by a semicolon.

(Permalink)

RequestableChannelClasses — a(a{sv}as) (Requestable_Channel_Class_List)

Read only

A list of channel classes which might be requestable from a Connection to this protocol (i.e. they will, or might, appear in the Connection's RequestableChannelClasses property).

Whether a Connection will have all, some or none of these requestable channel classes depends on server capabilities; similarly, individual contacts are not guaranteed to support all of these channel classes.

This property is immutable.

Connection managers with a .manager file MUST cache this property in the protocol's section of the .manager file, using the key RequestableChannelClasses. The corresponding value is a list of opaque strings, each followed by a semicolon; each of those strings is the name of a group in the .manager file which represents a channel class.

Each group representing a channel class has a key allowed which is a list of D-Bus property names representing allowed parameters. Any other keys that do not contain a space MUST be ignored. Any key containing a space represents a fixed property; the key has the form "propertyname type", and the value is encoded in the same way as for the default-p keys described in the ConnectionManager documentation.

Connection managers that have channel classes whose fixed properties are not representable in this form SHOULD NOT have .manager files.

For instance, this .manager file could represent a simple Text-only connection manager:

[Protocol jabber]
param-account=s required
param-password=s required
RequestableChannelClasses=text

[text]
org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.TargetHandleType u=1
allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;
(Permalink)

VCardField — s

Read only

The name of the most common vCard field used for this protocol's contact identifiers, normalized to lower case, or the empty string if there is no such field.

For example, this would be x-jabber for Jabber/XMPP (including Google Talk), or tel for the PSTN.

This is taken from Mission Control profiles as used on Maemo 5. One valid use of this field is to answer the question: given a contact's vCard containing an X-JABBER field, how can you communicate with the contact? By iterating through protocols looking for an x-jabber VCardField, one can build up a list of protocols that handle x-jabber, then offer the user a list of accounts for those protocols and/or the option to create a new account for one of those protocols.

It is not necessarily valid to interpret contacts' identifiers as values of this vCard field. For instance, telepathy-sofiasip supports contacts whose identifiers are of the form sip:jenny@example.com or tel:8675309, which would not normally both be represented by any single vCard field. Representing arbitrary handles/identifiers as vCard fields is a topic for future work.

(Permalink)

EnglishName — s

Read only

The name of the protocol in a form suitable for display to users, such as "AIM" or "Yahoo!", or the empty string if none is available.

This is effectively in the C locale (international English); user interfaces requiring a localized protocol name SHOULD look one up in their own message catalog based on either the Telepathy Protocol name or this property, but SHOULD use this English version as a fallback if no translated version can be found.

Many protocols are named after a company or product which isn't translated in non-English locales. This also provides a fallback display name, for UIs with no prior knowledge of a particular protocol.

If this property's value is empty, clients MAY fall back to using the Telepathy Protocol name, possibly with its capitalization adjusted.

(Permalink)

Icon — s

Read only

The name of an icon in the system's icon theme, such as "im-msn", or the empty string.

This can be used as a default if the Icon property is not set on an Account, or used by the AccountManager to choose a default icon if none is set during account creation.

If this property's value is empty, clients MAY fall back to generating a name based on the Protocol name.