[Telepathy] The XMPP implementation of Tubes
Dafydd Harries
dafydd.harries at collabora.co.uk
Wed Aug 15 05:26:40 PDT 2007
Ar 13/08/2007 am 18:20, ysgrifennodd Simon McVittie:
> On Mon, 13 Aug 2007 at 17:49:46 +0100, Simon McVittie wrote:
> > To offer a tube, send a Stream Initiation request with profile
> > NS_SI_TUBES or NS_SI_TUBES_OLD (currently, the latter is sent).
>
> Clearly wrong, we should use the correct namespace.
This was just to allow for a transition period from the old to the new. I
think it's reasonable to require a version of Gabble that recognises the new
one now.
> > It's somewhat vague whether we support opening a 1-1 tubes channel with
> > a MUC contact - there is code to support it, but I don't think we put
> > capabilities in MUC presence. We should probably rule that it's
> > unsupported.
>
> What I said.
Our support for presence in MUCs is somewhat shaky anyhow. I think this would
be nice to support, and I don't think it would be a lot of work, but I don't
think it's a priority.
> > In the case of D-Bus tubes, each <message> contains (a) an entire
> > D-Bus message, and (b) no more than one D-Bus message.
>
> In 1-1 tubes we should support arbitrary fragmentation - it's relatively
> simple to parse enough of a D-Bus message to be able to find message
> boundaries.
Why are 1-1 tubes special in terms of fragmentation? It seems to me that the
same defragmentation algorighm would also apply for MUCs.
Can we simplify things by guaranteeing:
- D-Bus message boundaries align with <message> boundaries
- a <message> that contains the beginning of a D-Bus will always contain at
least 8 bytes
> > The messages are sent in <message>s as specified by IBB (XEP-0047_), except
> > that the sequence number @seq is meaningless on output, must be ignored
> > on input, and no <open> or <close> ever occurs.
>
> I propose sending <message><data xmlns=NS_TUBES>base64</data></message>.
> The data element should also have an optional attribute "frag" or
> something, with values "first", "middle", "last"; omitting the attribute
> means it's a complete message (i.e. simultaneously first and last).
>
> This means the stream-id is meaningless and can be omitted...
I don't see the connection between the fragmentation and the stream ID.
> > :Children:
> > parameters
> > Tube parameters. Children are named "parameter" and have attributes
> > "name" (user-specified) and "type" ("str", "bytes", "int" or "uint").
> > Character content is UTF-8 (str), Base64 (bytes), ASCII decimal
> > (int, uint).
>
> This should be extended to support (at least) the complete set of D-Bus
> basic (non-container) types, plus 'ay'. Also, we should either explicitly
> not support the two 16-bit integer types, or note in the spec that
> 16-bit integers might become 32-bit integers in transit (dbus-glib
> doesn't let you distinguish, which is IMO a bug but we're stuck with it).
Not convinced this is useful. If we do this, do this later.
> I wonder whether it should just have Base64 character content which is
> the D-Bus serialization of the a{sv}. This can be done easily if we can
> require D-Bus 1.1.0 (i.e. dbus_message_marshal), by serializing a dummy
> message with the a{sv} as payload, then Base64ing just the body part.
I propose we keep the current scheme.
--
Dafydd
More information about the Telepathy
mailing list