假设我有一个枚举器[Array [Byte]]生成大小可变大小的字节数组(比如在控制器中接受POST主体)
我知道这些流实际上包含每个数据包的数据包:
每个数据包可以有不同的体型。
我们如何实现一个Enumeratee,它将初始流转换为字节数组流,其中每个数组都是一个数据包主体。
使用int的简化示例(首先是int表示数据包主体大小):
List(1, 2, 3), List(4, 5), List(6), List(2, 8), List(9) -> List(2) List(4, 5 ,6), List(8, 9)
答案 0 :(得分:0)
尝试从HTTP Response流解析JPG标头时遇到了完全相同的问题。
首先,您需要使用Enumerator.mapConcat
将流转换为字节而不是块。
然后,您必须根据第一个字节按组对字节进行分组。为此,有一个函数Enumeratee.grouped
以Iteratee[From, To]
作为参数,并重复使用它来处理From
的传入流并将其转换为{{1}的流程}。
这就是我提出的:
To
当然,如果您的整数编码方式不同(我假设无符号bigEndian,但您可能有不同的情况),则需要相应地更改for comprehension的大小行。