# # SPDX-License-Identifier: GPL-2.0-only # import itertools import json # The Python async server defaults to a 64K receive buffer, so we hardcode our # maximum chunk size. It would be better if the client and server reported to # each other what the maximum chunk sizes were, but that will slow down the # connection setup with a round trip delay so I'd rather not do that unless it # is necessary DEFAULT_MAX_CHUNK = 32 * 1024 def chunkify(msg, max_chunk): if len(msg) < max_chunk - 1: yield ''.join((msg, "\n")) else: yield ''.join((json.dumps({ 'chunk-stream': None }), "\n")) args = [iter(msg)] * (max_chunk - 1) for m in map(''.join, itertools.zip_longest(*args, fillvalue='')): yield ''.join(itertools.chain(m, "\n")) yield "\n" from .client import AsyncClient, Client from .serv import AsyncServer, AsyncServerConnection