Задача с недостатком памяти для буфера передачи может быть решена
примитивно просто. У меня тоже приблизительно такое случилось.
Данных для передачи килобайта 3,а буфер для передачи 128 байт.
Лечится тупо и просто.
В протоколе предусмотрена функция чтения массивов частями.
Те указывается массив, число байт и смещение от начала.
Мастер читает массив частями, размер которых ему известен.
Для написания алгоритма в общем виде существует
функция протокола для получения максимального числа
байт чтения массива за один раз.
При реализации никаких проблем не выявлено, устойчиво
работает.
-----
При таком техническом решении всё резко упрощается.
Кольцевой буфер не нужен.
Получили запрос - заполнили буфер пакетом - отправили.