- if size <= 3: # E.g. an HTTP chunk with just a keep-alive delimiter or end of stream (0).
- chunk[:size] = header[start:start + size]
- # There are several edge cases (size == [4-6]) as the chunk size exceeds the length
- # of the initial read of 8 bytes. With Twitter, these do not, in practice, occur. The
- # shortest JSON message starts with '{"limit":{'. Hence, it exceeds in size the edge cases
- # and eliminates the need to address them.
- else: # There is more to read in the chunk.
- end = len(header) - start
- chunk[:end] = header[start:]
- if PY_27_OR_HIGHER: # When possible, use less memory by reading directly into the buffer.
- buffer = memoryview(chunk)[end:] # Create a view into the bytearray to hold the rest of the chunk.
- sock.recv_into(buffer)
- else: # less efficient for python2.6 compatibility
- chunk[end:] = sock.recv(max(0, size - end))
- sock.recv(2) # Read the trailing CRLF pair. Throw it away.