Copyright © 2021 Val Lorentz <firstname.lastname@example.org>
Unlimited redistribution and modification of this document is allowed provided that the above copyright notice and this permission notice remains intact.
This specification is a work-in-progress and may have major incompatible changes without warning.
This specification may change at any time and we do not recommend implementing it in a production environment.
This is a work-in-progress specification.
All specifications depending on this specification MUST be draft specification
and use only capability names prefixed by
This specification extends the
batch specification to allow
client-initiated BATCH commands.
This specification itself does not introduce any client-to-server batch type, but is designed as a framework for other specifications.
Certain specifications call for clients to be able to send batched messages to
servers, for instance
This specification does not depend on the
which is used for server-initiated batches only.
This specification uses the [standard replies] framework.
This specification does not introduce any capability.
Clients SHOULD NOT send
BATCH commands to servers, unless they negotiated
a capability that allows them to do so.
This specification introduces client initiated batches. These use the same syntax as server initiated batches.
Once a client has opened a batch, it MUST NOT send any messages
that are not part of the batch, until it is closed
Clients MUST NOT send nested batches, i.e. clients may not send
commands with a
Servers MUST use
FAIL messages from the [standard replies] framework
to notify clients of errors with client-initiated batches.
The command is
BATCH and the following codes are defined:
TIMEOUT <reference-tag>: the batch was left open for too long, all past and future messages in this batch will be ignored.
This section is non-normative.
While this version of the client-initated batch framework does not allow nested batches, future extensions may allow them. Client and server implementations may want to take this into account while designing their internal APIs.