使用什么 Dart 库来实现缓冲区管道?

  • 本文关键字:实现 缓冲区 管道 Dart dart
  • 更新时间 :
  • 英文 :


我想找到一种方法来重现这个节点库的行为buffer-pipe( https://www.npmjs.com/package/buffer-pipe (

但我在达特找不到合适的图书馆。有什么建议吗?

我认为以下内容应该有效。我试图模仿缓冲管道接口:

import 'dart:collection';
class BufferPipe<T> {
int _bytesRead = 0;
int _bytesWrote = 0;
final DoubleLinkedQueue<T> _buffer = DoubleLinkedQueue<T>();
List<T> read(int length) {
final list = <T>[];
for (var i = 0; i < length && _buffer.isNotEmpty; i++) {
list.add(_buffer.removeFirst());
_bytesRead++;
}
return list;
}
void write(Iterable<T> data) {
final oldLength = _buffer.length;
_buffer.addAll(data);
_bytesWrote += _buffer.length - oldLength;
}
bool get end => _buffer.isEmpty;
int get bytesRead => _bytesRead;
int get bytesWrote => _bytesWrote;
}
void main() {
final buffer = BufferPipe<int>();
print('Read count: ${buffer.bytesRead} Write count: ${buffer.bytesWrote}');
print('No more data? ${buffer.end}');
buffer.write([1, 2, 4, 5, 6, 7, 8, 9, 10]);
print('Read count: ${buffer.bytesRead} Write count: ${buffer.bytesWrote}');
print('No more data? ${buffer.end}');
print(buffer.read(6));
print('Read count: ${buffer.bytesRead} Write count: ${buffer.bytesWrote}');
print('No more data? ${buffer.end}');
print(buffer.read(6));
print('Read count: ${buffer.bytesRead} Write count: ${buffer.bytesWrote}');
print('No more data? ${buffer.end}');
print(buffer.read(6));
print('Read count: ${buffer.bytesRead} Write count: ${buffer.bytesWrote}');
print('No more data? ${buffer.end}');
}

其中返回:

Read count: 0 Write count: 0
No more data? true
Read count: 0 Write count: 9
No more data? false
[1, 2, 4, 5, 6, 7]
Read count: 6 Write count: 9
No more data? false
[8, 9, 10]
Read count: 9 Write count: 9
No more data? true
[]
Read count: 9 Write count: 9
No more data? true

该类是通用的,因此可用于所需的任何类型的数据。

最新更新