Peter,
(sorry for multiple mail, I did wanted to split technical details and requirement discussions)

(2013/03/18 22:53), Peter Waher wrote:
Stepping back to the requirements. For example, what I need is binary-only 
bootstrap mechanism for EXI (not like XEP-0138) with least negotiation/propose 
of compression parameter. Does your proposal cover such use case?

No. This XEP covers EXI negotiation in a way compliant with XEP-0138.

Ok, so I think I need to write another proposal. Would you mind if I re-use the basic idea on 'EXI encoding part' of your proposal to make better interoperability?

Let me ask a question: which strategy are you taking?

  1) short target: find a way to encode XMPP stanza with existing
     EXI format 1.0
  2) long target: find a way to encode XMPP stanza ideally with
     proposed currently-nonexistent ideal EXI 1.1 (or 2.0)

The proposal supports different EXI versions. It's part of the negotiation, 
using the version attribute.

I see, then may I assume you have no intention to make 'yet another EXI for XMPP' such as sessionWideBuffer option?

My concern on a-1 is about XML semantics. Does current server implementation 
okay to have modified XML-level structure? On the other hand, re-use of string 
table is possible only in a-3 (discussion below).

Sorry, I don't understand your question.

In my (yet) shallow understandings, your approach to send a stanza looks like following (correct me if I'm wrong)

<stream>
 <a-single-stanza/>
</stream>
(padding, fflush(), PSH)
<stream>
 <a-single-stanza/>
</stream>
(again, padding, fflush(), PSH)

For me, it looks different from the semantics of </stream> tag defined in RFC6120 section 4.4:
If the parties are using either two streams over a single TCP connection or two 
streams over two TCP connections, the entity that sends the closing stream tag 
MUST behave as follows:

1.    Wait for the other party to also close its outbound stream before 
terminating the underlying TCP connection(s); this gives the other party an 
opportunity to finish transmitting any outbound data to the closing entity 
before the termination of the TCP connection(s).
2.    Refrain from sending any further data over its outbound stream to the 
other entity, but continue to process data received from the other entity (and, 
if necessary, process such data).
3.    Consider both streams to be void if the other party does not send its closing 
stream tag within a reasonable amount of time (where the definition of 
"reasonable" is a matter of implementation or deployment).
4.    After receiving a reciprocal closing stream tag from the other party or 
waiting a reasonable amount of time with no response, terminate the underlying 
TCP connection(s).


For dynamic grammars, your proposal "reusing the same options as used by the 
stream" (section 3.2) may not be adequate, because this means all stanzas should be in 
the same schema and does not allow introduction of new schema on the fly. However, I agree a 
> constrained node seldom updates its functionality so fixed set of schema on C2S pair 
should be okay (for S2S communication it's not good).

I don't see why this should require all stanzas to be in the same schema. 
Schemas are handled by namespace, and a collection of schemas can be used in 
compression. Which schema namespaces are to be included is part of the 
negotiation.

Sorry, I mean 'the set of schema given in the negotiation phase.' S2S connection may be required to re-negotiated if a new client connect to a server with schemas not included in the running S2S communication.

Regards,

Yusuke



Reply via email to