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
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
<?xml version="1.0" ?>
<node name="/Channel_Interface_Tube" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<tp:copyright>Copyright © 2008-2009 Collabora Limited</tp:copyright>
<tp:copyright>Copyright © 2008-2009 Nokia Corporation</tp:copyright>
<tp:license>
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.
</tp:license>
<interface name="org.freedesktop.Telepathy.Channel.Interface.Tube">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>A <i>tube</i> is a mechanism for arbitrary data transfer between
two or more IM users, used to allow applications on the users'
systems to communicate without having to establish network
connections themselves. Currently, two types of tube exist:
<tp:dbus-ref namespace="org.freedesktop.Telepathy"
>Channel.Type.DBusTube</tp:dbus-ref> and
<tp:dbus-ref namespace="org.freedesktop.Telepathy"
>Channel.Type.StreamTube</tp:dbus-ref>. This interface contains
the properties, signals and methods common to both types of tube;
you can only create channels of a specific tube type, not of this
type. A tube channel contains exactly one tube; if you need several
tubes, you have to create several tube channels.</p>
<p>Tube channels can be requested for <tp:type>Handle_Type</tp:type>
Contact (for 1-1 communication) or Room (to communicate with others in
the room simultaneously).</p>
<p>As an exception to the usual handling of capabilities, connection managers
for protocols with capability discovery (such as XMPP) SHOULD advertise the
capability representing each Tube type that they support
(<tp:dbus-ref namespace="org.freedesktop.Telepathy">Channel.Type.DBusTube</tp:dbus-ref> and/or
<tp:dbus-ref namespace="org.freedesktop.Telepathy">Channel.Type.StreamTube</tp:dbus-ref>)
even if no client has indicated via
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities.DRAFT">SetSelfCapabilities</tp:dbus-ref>
that such a tube is supported. They SHOULD also allow clients to offer tubes with any
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Channel.Type.StreamTube">Service</tp:dbus-ref> or
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Channel.Type.DBusTube">ServiceName</tp:dbus-ref>
to any contact which supports the corresponding tube capability.</p>
<tp:rationale>
<p>This lowers the barrier to entry for those writing new tube
applications, and preserves interoperability with older versions of
the Telepathy stack which did not support rich capabilities.</p>
</tp:rationale>
</tp:docstring>
<property name="Parameters" type="a{sv}" tp:type="String_Variant_Map"
access="read" tp:name-for-bindings="Parameters">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Each tube has a dictionary of arbitrary parameters. Parameters are
commonly used to bootstrap legacy protocols where you can't
negotiate parameters in-band. The allowable keys,
types and values are defined by the service, but connection managers
must support the value being a string (D-Bus type <tt>'s'</tt>),
array of bytes (D-Bus type <tt>'ay'</tt>), unsigned integer (D-Bus
type <tt>'u'</tt>), integer (D-Bus type <tt>'i'</tt>) and boolean
(D-Bus type <tt>'b'</tt>).</p>
<p>When the tube is offered, the parameters are transmitted with the
offer and appear as a property of the incoming tube for other
participants.</p>
<p>For example, a stream tube for <tp:dbus-ref
namespace="org.freedesktop.Telepathy.Channel.Type.StreamTube">Service</tp:dbus-ref>
<tt>"smb"</tt> (<cite>Server Message Block over TCP/IP</cite>) might
use the following properties, as defined in <a
href="http://www.dns-sd.org/ServiceTypes.html">DNS SRV (RFC 2782)
Service Types</a>:</p>
<pre>
{ 'u': 'some-username',
'p': 'top-secret-password',
'path': '/etc/passwd',
}</pre>
<p>When requesting a tube with
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">CreateChannel</tp:dbus-ref>,
this property MUST NOT be included in the request; instead, it is set
when <tp:dbus-ref
namespace="org.freedesktop.Telepathy.Channel.Type">StreamTube.Offer</tp:dbus-ref>
or <tp:dbus-ref
namespace="org.freedesktop.Telepathy.Channel.Type">DBusTube.Offer</tp:dbus-ref>
(as appropriate) is called. Its value is undefined until the tube is
offered; once set, its value MUST NOT change.</p>
<p>When receiving an incoming tube, this property is immutable and so advertised in the
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">NewChannels</tp:dbus-ref>
signal.</p>
</tp:docstring>
</property>
<property name="State" type="u" tp:type="Tube_Channel_State" access="read"
tp:name-for-bindings="State">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>State of the tube in this channel.</p>
<p>When requesting a tube with
<tp:dbus-ref
namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">CreateChannel</tp:dbus-ref>,
this property MUST NOT be included in the request.</p>
</tp:docstring>
</property>
<tp:enum name="Tube_Channel_State" type="u">
<tp:enumvalue suffix="Local_Pending" value="0">
<tp:docstring>
The initiator offered the tube. The tube is waiting to be
accepted/closed locally. If the client accepts the tube, the tube's
state will be Open.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Remote_Pending" value="1">
<tp:docstring>
The tube is waiting to be accepted/closed remotely. If the
recipient accepts the tube, the tube's state will be Open.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Open" value="2">
<tp:docstring>
The initiator offered the tube and the recipient accepted it. The
tube is open for traffic. The tube's state stays in this state until
it is closed.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Not_Offered" value="3">
<tp:docstring>
The tube channel has been requested but the tube is not yet offered.
The client should offer the tube to the recipient and the tube's
state will be Remote_Pending. The method used to offer the tube
depends on the tube type.
</tp:docstring>
</tp:enumvalue>
</tp:enum>
<signal name="TubeChannelStateChanged"
tp:name-for-bindings="Tube_Channel_State_Changed">
<tp:docstring>
Emitted when the state of the tube channel changes. Valid state
transitions are documented with <tp:type>Tube_Channel_State</tp:type>.
</tp:docstring>
<arg name="State" type="u" tp:type="Tube_Channel_State">
<tp:docstring>
The new state of the tube.
</tp:docstring>
</arg>
</signal>
<tp:enum name="Socket_Address_Type" type="u">
<tp:enumvalue suffix="Unix" value="0">
<tp:docstring>
A Unix socket. The address variant contains a byte-array, signature 'ay',
containing the path of the socket.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Abstract_Unix" value="1">
<tp:docstring>
An abstract Unix socket. The address variant contains a byte-array,
signature 'ay', containing the path of the socket including the
leading null byte.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="IPv4" value="2">
<tp:docstring>
An IPv4 socket. The address variant contains a Socket_Address_IPv4,
i.e. a structure with signature (sq)
in which the string is an IPv4 dotted-quad address literal
(and must not be a DNS name), while the 16-bit unsigned integer is
the port number.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="IPv6" value="3">
<tp:docstring>
An IPv6 socket. The address variant contains a Socket_Address_IPv6,
i.e. a structure with signature (sq)
in which the string is an IPv6 address literal as specified in
RFC2373 (and must not be a DNS name), while the 16-bit unsigned
integer is the port number.
</tp:docstring>
</tp:enumvalue>
</tp:enum>
<tp:enum name="Socket_Access_Control" type="u"
array-name="Socket_Access_Control_List">
<tp:enumvalue suffix="Localhost" value="0">
<tp:docstring>
The IP or Unix socket can be accessed by any local user (e.g.
a Unix socket that accepts all local connections, or an IP socket
listening on 127.0.0.1 (or ::1) or rejecting connections not from
that address). The associated variant must be ignored.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Port" value="1">
<tp:docstring>
May only be used on IP sockets. The associated variant must contain
a struct Socket_Address_IPv4 (or Socket_Address_IPv6)
containing the string form of an IP address of the appropriate
version, and a port number. The socket can only be accessed if the
connecting process has that address and port number; all other
connections will be rejected.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Netmask" value="2">
<tp:deprecated version="0.17.25">This has never been implemented.
If you want to share a service to your whole LAN, Telepathy is
not the way to do it.</tp:deprecated>
<tp:docstring>
May only be used on IP sockets. The associated variant must contain
a struct Socket_Netmask_IPv4 (or Socket_Netmask_IPv6) with
signature (sy), containing the string form of an
IP address of the appropriate version, and a prefix length "n".
The socket can only be accessed if the first n bits of the
connecting address match the first n bits of the given address.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Credentials" value="3">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>May only be used on UNIX sockets.
The connecting process must send a byte when
it first connects, which is not considered to be part of the data
stream. If the operating system uses sendmsg() with SCM_CREDS or
SCM_CREDENTIALS to pass credentials over sockets, the connecting
process must do so if possible; if not, it must still send the
byte.</p>
<p>The listening process will disconnect the connection unless it
can determine by OS-specific means that the connecting process
has the same user ID as the listening process.</p>
<p>The associated variant must be ignored.</p>
</tp:docstring>
</tp:enumvalue>
</tp:enum>
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
|