1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
<?xml version="1.0" ?>
<node name="/Connection_Interface_Resources"
xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<tp:copyright>Copyright © 2010 Collabora Ltd.</tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
<p>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.</p>
<p>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.</p>
<p>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.</p>
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.Resources.DRAFT"
tp:causes-havoc="experimental">
<tp:added version="0.21.1">(draft 1)</tp:added>
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An interface on connections to show contact attributes for
specific resources of a contact, if the protocol supports
multiple resources. Resources are most common in XMPP, hence the
name of this interface, but they are also present in MSN, where
they are called points of presence.</p>
<p>When a client requests some attribute of a contact using its
handle on the connection, the CM uses an algorithm to choose the
most appropriate resource for the job. If there is only one
resource, then the choice is obvious. If, however, there is more
than one resource connected at any one time, the CM either
aggregates all appropriate information to return (in the case of
capabilities), or chooses one specific resource (in the case of
presence).</p>
<p>Resources in XMPP have names, and it can be extremely useful
for the user to be able to know which resources of a contact are
online, providing the names are human-readable. Before now,
resources have not been exposed in Telepathy, but this interface
attempts to change this.</p>
<p>When using this interface, it is a little like using the
<tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface"
>Contacts</tp:dbus-ref> interface, but only resource-specific
attributes are ever returned. The resource-specific contact
attributes are decided on by the CM, but XMPP's are listed
below:</p>
<ul>
<li><tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">SimplePresence/presence</tp:dbus-ref></li>
<li><tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">ContactCapabilities/capabilities</tp:dbus-ref></li>
<li><tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">ClientTypes/client-types</tp:dbus-ref></li>
</ul>
</tp:docstring>
<method name="GetResources" tp:name-for-bindings="Get_Resources">
<tp:docstring>
Return the resource information of the given contacts. If any
of the contact attributes for specific resources of the given
contacts' are not known return immediately without waiting for
a reply.
</tp:docstring>
<arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
The contacts whose resource attributes should be returned.
</tp:docstring>
</arg>
<arg direction="out" name="Resources" type="a{ua{sa{sv}}}"
tp:type="Resources_Attributes_Map">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>The contacts' resources and the contact attributes specific
to each resource. If contact attributes are not immediately
known, the behaviour is defined by the interface; the
attribute should either be omitted from the result or
replaced with a default value.</p>
<p>For every contact handle passed into this method, it is
guaranteed that there will be a key in the returned map
that corresponds to said handle. If there is no information
regarding the contact the resource information map will be
empty.</p>
</tp:docstring>
</arg>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
</tp:possible-errors>
</method>
<tp:enum name="Resources_Human_Readability" type="u">
<tp:enumvalue suffix="Never" value="0">
<tp:docstring>
The resource string is never human-readable.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Maybe" value="1">
<tp:docstring>
The resource string might be human-readable.
</tp:docstring>
</tp:enumvalue>
</tp:enum>
<property name="ResourcesHumanReadable" type="u" access="read"
tp:type="Resources_Human_Readability"
tp:name-for-bindings="Resources_Human_Readable">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Whether the resources returned from <tp:member-ref>GetResources</tp:member-ref>
are human readable or not.</p>
<p>If the connection manager knows that all resource names are
automatically generated, then the resource strings mean
nothing to the user. Showing these strings in the UI would
be confusing, so by setting this to
Resources_Human_Readability_Never, the UI is advised not to
show resources.</p>
<p>If on the other hand, all resources are set to nice names
(such as "office" or "home") then it might be wise to expose
these strings in the UI, so this property would be set to
Resources_Human_Readability_Maybe. This is the case in XMPP --
most resources are set in a way that the user can deduce some
information from them. The absence of an Always enum value is
because in the case of XMPP, the resource string could be
partially human-readable (as on Google Talk, where a resource
of "home" is changed by the server to a unique string like
"home_1234fdec") or not at all human-readable.</p>
</tp:docstring>
</property>
<signal name="ResourcesUpdated" tp:name-for-bindings="Resources_Updated">
<tp:docstring>
Emitted when a contact has a resource added or removed, or any
contact attribute for any resource changes.
</tp:docstring>
<arg name="Contact" type="u" tp:type="Contact_Handle">
<tp:docstring>
The contact.
</tp:docstring>
</arg>
<arg name="Resources" tp:type="Resource_Information_Map"
type="a{sa{sv}}">
<tp:docstring>
The contact's resource information. All resource information
is given, not just the details which have changed.
</tp:docstring>
</arg>
</signal>
<tp:mapping name="Resource_Information_Map">
<tp:docstring>
A map of a contact's resources to their resource-specific
information.
</tp:docstring>
<tp:member name="Key" type="s">
<tp:docstring>
<p>The name of the resource.</p>
</tp:docstring>
</tp:member>
<tp:member name="Contact_Attributes" type="a{sv}"
tp:type="Single_Contact_Attributes_Map">
<tp:docstring>
A map of contact attributes whose data is specific to this
resource.
</tp:docstring>
</tp:member>
</tp:mapping>
<tp:mapping name="Resources_Attributes_Map">
<tp:docstring>Mapping returned by
<tp:member-ref>GetResources</tp:member-ref>, representing a
collection of Contacts, their resources, and their
resource-specific contact attributes.</tp:docstring>
<tp:member type="u" tp:type="Contact_Handle" name="Contact">
<tp:docstring>
A contact.
</tp:docstring>
</tp:member>
<tp:member type="a{sa{sv}}" tp:type="Resource_Information_Map"
name="Resources">
<tp:docstring>
A map of the contact's resources to their resource-specific
information.
</tp:docstring>
</tp:member>
</tp:mapping>
<tp:contact-attribute name="resources" type="a{sa{sv}}"
tp:type="Resource_Information_Map">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>The same mapping that would be returned by
<tp:member-ref>GetResources</tp:member-ref> for this contact.</p>
</tp:docstring>
</tp:contact-attribute>
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
|