Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Side by Side Diff: sdk/lib/core/sink.dart

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/core/set.dart ('k') | sdk/lib/core/string.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 /**
6 * An interface for an object that can receive a sequence of values.
7 */
8 abstract class Sink<T> {
9 /** Write a value to the sink. */
10 add(T value);
11 /** Tell the sink that no further values will be written. */
12 void close();
13 }
14
15 // ----------------------------------------------------------------------
16 // Collections/Sink interoperability
17 // ----------------------------------------------------------------------
18
19 typedef void _CollectionSinkCallback<T>(Collection<T> collection);
20
21 /** Sink that stores incoming data in a collection. */
22 class CollectionSink<T> implements Sink<T> {
23 final Collection<T> collection;
24 final _CollectionSinkCallback<T> callback;
25 bool _isClosed = false;
26
27 CollectionSink(this.collection, [void callback(Collection<T> collection)])
28 : this.callback = callback;
29
30 add(T value) {
31 if (_isClosed) throw new StateError("Adding to closed sink");
32 collection.add(value);
33 }
34
35 void close() {
36 if (_isClosed) throw new StateError("Closing closed sink");
37 _isClosed = true;
38 if (callback != null) callback(collection);
39 }
40 }
OLDNEW
« no previous file with comments | « sdk/lib/core/set.dart ('k') | sdk/lib/core/string.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698