ChainedInputStream Example
The following is an example of reading data from a bound stream cyclically using ChainedInputStream.
import std.io.*
import std.collection.ArrayList
main(): Unit {
const size = 2
/* Creates two ByteArrayStream instances and writes data to them. */
let streamArr = Array<InputStream>(size, {_ => ByteArrayStream()})
for (i in 0..size) {
match (streamArr[i]) {
case v: OutputStream =>
let str = "now ${i}"
v.write(str.toArray())
case _ => throw Exception()
}
}
/* Binds the two ByteArrayStream instances to ChainedInputStream. */
let chainedInputStream = ChainedInputStream(streamArr)
let res = ArrayList<Byte>()
let buffer = Array<Byte>(20, item: 0)
var readLen = chainedInputStream.read(buffer)
/* Reads data from chainedInputStream cyclically. */
while (readLen != 0) {
res.appendAll(buffer[..readLen])
readLen = chainedInputStream.read(buffer)
}
println(String.fromUtf8(res.toArray()))
}
Running result:
now 0now 1