~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/smart/protocol.py

Merge from hpss-protocol-docs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
255
255
class ChunkedBodyDecoder(_StatefulDecoder):
256
256
    """Decoder for chunked body data.
257
257
 
258
 
    This is very similar the HTTP's chunked encoding::
259
 
 
260
 
        STREAMED_BODY := CHUNKS TERMINATOR
261
 
        CHUNKS := CHUNK [CHUNKS]
262
 
        CHUNK := CHUNK_LENGTH CHUNK_CONTENT
263
 
        CHUNK_LENGTH := HEX_DIGITS NEWLINE
264
 
        CHUNK_CONTENT := bytes
265
 
 
266
 
        TERMINATOR := SUCCESS_TERMINATOR | ERROR_TERMINATOR
267
 
        SUCCESS_TERMINATOR := '0' NEWLINE
268
 
        ERROR_TERMINATOR := 'ERR' NEWLINE CHUNKS SUCCESS_TERMINATOR
269
 
 
270
 
    That is, the body consists of a series of chunks.  Each chunk starts with a
271
 
    length prefix in hexadecimal digits, followed by an ASCII newline byte.
272
 
    The end of the body is signaled by a zero the zero-length chunk, i.e.
273
 
    '0\\n', or by 'ERR\\n' followed by error args, one per chunk.
 
258
    This is very similar the HTTP's chunked encoding.  See the description of
 
259
    streamed body data in `doc/developers/network-protocol.txt` for details.
274
260
    """
275
261
 
276
262
    def __init__(self):