Copyright © 2021 Val Lorentz <progval+ircv3@progval.net>
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 draft/
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 draft/multiline
This specification does not depend on the batch
capability,
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.
BATCH
verb 🔗
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
(with BATCH -reference-tag
).
Clients MUST NOT send nested batches, i.e. clients may not send BATCH
commands with a batch
tag.
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.