blob: 849d5e7313aab3582dc4eef3f59aed4472d12bf1 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/**
* [ListInputStream] makes it possible to use the [InputStream]
* interface to stream over data that is received in chunks as lists
* of integers.
*
* When a new list of integers is received it can be written to the
* [ListInputStream] using the [write] method. The [markEndOfStream]
* method must be called when the last data has been written to the
* [ListInputStream].
*/
abstract class ListInputStream implements InputStream {
/**
* Create an empty [ListInputStream] to which data can be written
* using the [write] method.
*/
factory ListInputStream() => new _ListInputStream();
/**
* Write more data to be streamed over to the [ListInputStream].
*/
void write(List<int> data);
/**
* Notify the [ListInputStream] that no more data will be written to
* it.
*/
void markEndOfStream();
}
/**
* [ListOutputStream] makes it possible to use the [OutputStream]
* interface to write data to a [List] of integers.
*/
abstract class ListOutputStream implements OutputStream {
/**
* Create a [ListOutputStream].
*/
factory ListOutputStream() => new _ListOutputStream();
/**
* Reads all available data from the stream. If no data is available `null`
* will be returned.
*/
List<int> read();
/**
* Sets the handler that gets called when data is available.
*/
void set onData(void callback());
}