Реализация буферизованного потока преобразования
Я пытаюсь реализовать поток сновый API потоков Node.js это буферизует определенное количество данных. Когда этот поток передается в другой поток, или если что-то потребляетreadable
события, этот поток должен очистить свой буфер, а затем просто стать сквозным. Уловка в том, что этот поток будет передан во многие другие потоки, и когда каждый целевой поток присоединен, буфер должен быть очищендаже если он уже сброшен в другой поток.
Например:
BufferStream
инвентарьstream.Transform
и сохраняет внутренний кольцевой буфер 512 КБReadableStreamA
передан в экземплярBufferStream
BufferStream
пишет в свой кольцевой буфер, читая данные изReadableStreamA
как это входит. (Это неНе имеет значения, если данные потеряны, так как буфер перезаписывает старые данные.)BufferStream
по трубопроводуWritableStreamB
WritableStreamB
получает весь буфер 512 КБ и продолжает получать данные, как они записаныReadableStreamA
через .BufferStream
BufferStream
по трубопроводуWritableStreamC
WritableStreamC
также получает весь буфер 512 КБ, но этот буфер теперь отличается от того, чтоWritableStreamB
получил, потому что с тех пор было записано больше данных.BufferStream
Возможно ли это с помощью API потоков? Единственный способ, о котором я могу подумать, - это создать объект с методом, который раскручивает новый поток PassThrough для каждого пункта назначения, то есть я не могут просто труба туда и обратно.
Для чего этостоит, ямы сделали это со старымпротекающий» API, просто слушая новые обработчики наdata
События. Когда новая функция была прикреплена с.on('data')
Я бы назвал это напрямую с копией кольцевого буфера.