Dart API Referencedart:ioHttpServer

HttpServer abstract class

HTTP server.

abstract class HttpServer implements Stream<HttpRequest> {
 // TODO(ajohnsen): Document with example, once the stream API is final.
 // TODO(ajohnsen): Add HttpServer.secure.
 /**
  * Starts listening for HTTP requests on the specified [address] and
  * [port].
  *
  * The [address] can either be a [String] or an
  * [InternetAddress]. If [address] is a [String], [bind] will
  * perform a [InternetAddress.lookup] and use the first value in the
  * list. To listen on the loopback adapter, which will allow only
  * incoming connections from the local host, use the value
  * [InternetAddress.LOOPBACK_IP_V4] or
  * [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming
  * connection from the network use either one of the values
  * [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to
  * bind to all interfaces or the IP address of a specific interface.
  *
  * If an IP version 6 (IPv6) address is used, both IP version 6
  * (IPv6) and version 4 (IPv4) connections will be accepted. To
  * restrict this to version 6 (IPv6) only, use [HttpServer.listenOn]
  * with a [ServerSocket] configured for IP version 6 connections
  * only.
  *
  * If [port] has the value [:0:] an ephemeral port will be chosen by
  * the system. The actual port used can be retrieved using the
  * [port] getter.
  *
  * The optional argument [backlog] can be used to specify the listen
  * backlog for the underlying OS listen setup. If [backlog] has the
  * value of [:0:] (the default) a reasonable value will be chosen by
  * the system.
  */
 static Future<HttpServer> bind(address,
                                int port,
                                {int backlog: 0})
     => _HttpServer.bind(address, port, backlog);

 /**
  * The [address] can either be a [String] or an
  * [InternetAddress]. If [address] is a [String], [bind] will
  * perform a [InternetAddress.lookup] and use the first value in the
  * list. To listen on the loopback adapter, which will allow only
  * incoming connections from the local host, use the value
  * [InternetAddress.LOOPBACK_IP_V4] or
  * [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming
  * connection from the network use either one of the values
  * [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to
  * bind to all interfaces or the IP address of a specific interface.
  *
  * If an IP version 6 (IPv6) address is used, both IP version 6
  * (IPv6) and version 4 (IPv4) connections will be accepted. To
  * restrict this to version 6 (IPv6) only, use [HttpServer.listenOn]
  * with a [ServerSocket] configured for IP version 6 connections
  * only.
  *
  * If [port] has the value [:0:] an ephemeral port will be chosen by
  * the system. The actual port used can be retrieved using the
  * [port] getter.
  *
  * The optional argument [backlog] can be used to specify the listen
  * backlog for the underlying OS listen setup. If [backlog] has the
  * value of [:0:] (the default) a reasonable value will be chosen by
  * the system.
  *
  * The certificate with Distinguished Name [certificateName] is looked
  * up in the certificate database, and is used as the server certificate.
  * if [requestClientCertificate] is true, the server will request clients
  * to authenticate with a client certificate.
  */

 static Future<HttpServer> bindSecure(address,
                                      int port,
                                      {int backlog: 0,
                                       String certificateName,
                                       bool requestClientCertificate: false})
     => _HttpServer.bindSecure(address,
                               port,
                               backlog,
                               certificateName,
                               requestClientCertificate);

 /**
  * Attaches the HTTP server to an existing [ServerSocket]. When the
  * [HttpServer] is closed, the [HttpServer] will just detach itself,
  * closing current connections but not closing [serverSocket].
  */
 factory HttpServer.listenOn(ServerSocket serverSocket)
     => new _HttpServer.listenOn(serverSocket);

 /**
  * Permanently stops this [HttpServer] from listening for new connections.
  * This closes this [Stream] of [HttpRequest]s with a done event.
  */
 void close();

 /**
  * Returns the port that the server is listening on. This can be
  * used to get the actual port used when a value of 0 for [:port:] is
  * specified in the [bind] or [bindSecure] call.
  */
 int get port;

 /**
  * Sets the timeout, in seconds, for sessions of this [HttpServer].
  * The default timeout is 20 minutes.
  */
 set sessionTimeout(int timeout);

 /**
  * Returns an [HttpConnectionsInfo] object summarizing the number of
  * current connections handled by the server.
  */
 HttpConnectionsInfo connectionsInfo();
}

Implements

Stream<HttpRequest>

Static Methods

Future<HttpServer> bind(address, int port, {int backlog: 0}) #

Starts listening for HTTP requests on the specified address and port.

The address can either be a String or an InternetAddress. If address is a String, bind will perform a InternetAddress.lookup and use the first value in the list. To listen on the loopback adapter, which will allow only incoming connections from the local host, use the value [InternetAddress.LOOPBACK_IP_V4] or [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming connection from the network use either one of the values [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to bind to all interfaces or the IP address of a specific interface.

If an IP version 6 (IPv6) address is used, both IP version 6 (IPv6) and version 4 (IPv4) connections will be accepted. To restrict this to version 6 (IPv6) only, use HttpServer.listenOn with a ServerSocket configured for IP version 6 connections only.

If port has the value 0 an ephemeral port will be chosen by the system. The actual port used can be retrieved using the port getter.

The optional argument backlog can be used to specify the listen backlog for the underlying OS listen setup. If backlog has the value of 0 (the default) a reasonable value will be chosen by the system.

static Future<HttpServer> bind(address,
                              int port,
                              {int backlog: 0})
   => _HttpServer.bind(address, port, backlog);

Future<HttpServer> bindSecure(address, int port, {int backlog: 0, String certificateName, bool requestClientCertificate: false}) #

The address can either be a String or an InternetAddress. If address is a String, bind will perform a InternetAddress.lookup and use the first value in the list. To listen on the loopback adapter, which will allow only incoming connections from the local host, use the value [InternetAddress.LOOPBACK_IP_V4] or [InternetAddress.LOOPBACK_IP_V6]. To allow for incoming connection from the network use either one of the values [InternetAddress.ANY_IP_V4] or [InternetAddress.ANY_IP_V6] to bind to all interfaces or the IP address of a specific interface.

If an IP version 6 (IPv6) address is used, both IP version 6 (IPv6) and version 4 (IPv4) connections will be accepted. To restrict this to version 6 (IPv6) only, use HttpServer.listenOn with a ServerSocket configured for IP version 6 connections only.

If port has the value 0 an ephemeral port will be chosen by the system. The actual port used can be retrieved using the port getter.

The optional argument backlog can be used to specify the listen backlog for the underlying OS listen setup. If backlog has the value of 0 (the default) a reasonable value will be chosen by the system.

The certificate with Distinguished Name certificateName is looked up in the certificate database, and is used as the server certificate. if requestClientCertificate is true, the server will request clients to authenticate with a client certificate.

static Future<HttpServer> bindSecure(address,
                                    int port,
                                    {int backlog: 0,
                                     String certificateName,
                                     bool requestClientCertificate: false})
   => _HttpServer.bindSecure(address,
                             port,
                             backlog,
                             certificateName,
                             requestClientCertificate);

Constructors

factory HttpServer.listenOn(ServerSocket serverSocket) #

Attaches the HTTP server to an existing ServerSocket. When the HttpServer is closed, the HttpServer will just detach itself, closing current connections but not closing serverSocket.

factory HttpServer.listenOn(ServerSocket serverSocket)
   => new _HttpServer.listenOn(serverSocket);

Properties

final Future<T> first #

inherited from Stream

Returns the first element.

If this is empty throws a StateError. Otherwise this method is equivalent to this.elementAt(0)

Future<T> get first {
 _FutureImpl<T> future = new _FutureImpl<T>();
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     subscription.cancel();
     future._setValue(value);
     return;
   },
   onError: future._setError,
   onDone: () {
     future._setError(new StateError("No elements"));
   },
   cancelOnError: true);
 return future;
}

final bool isBroadcast #

inherited from Stream

Reports whether this stream is a broadcast stream.

bool get isBroadcast => false;

final Future<bool> isEmpty #

inherited from Stream

Reports whether this stream contains any elements.

Future<bool> get isEmpty {
 _FutureImpl<bool> future = new _FutureImpl<bool>();
 StreamSubscription subscription;
 subscription = this.listen(
   (_) {
     subscription.cancel();
     future._setValue(false);
   },
   onError: future._setError,
   onDone: () {
     future._setValue(true);
   },
   cancelOnError: true);
 return future;
}

final Future<T> last #

inherited from Stream

Returns the last element.

If this is empty throws a StateError.

Future<T> get last {
 _FutureImpl<T> future = new _FutureImpl<T>();
 T result = null;
 bool foundResult = false;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     foundResult = true;
     result = value;
   },
   onError: future._setError,
   onDone: () {
     if (foundResult) {
       future._setValue(result);
       return;
     }
     future._setError(new StateError("No elements"));
   },
   cancelOnError: true);
 return future;
}

final Future<int> length #

inherited from Stream

Counts the elements in the stream.

Future<int> get length {
 _FutureImpl<int> future = new _FutureImpl<int>();
 int count = 0;
 this.listen(
   (_) { count++; },
   onError: future._setError,
   onDone: () {
     future._setValue(count);
   },
   cancelOnError: true);
 return future;
}

final int port #

Returns the port that the server is listening on. This can be used to get the actual port used when a value of 0 for port is specified in the bind or bindSecure call.

int get port;

abstract dynamic set sessionTimeout(int timeout) #

Sets the timeout, in seconds, for sessions of this HttpServer. The default timeout is 20 minutes.

final Future<T> single #

inherited from Stream

Returns the single element.

If this is empty or has more than one element throws a StateError.

Future<T> get single {
 _FutureImpl<T> future = new _FutureImpl<T>();
 T result = null;
 bool foundResult = false;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     if (foundResult) {
       subscription.cancel();
       // This is the second element we get.
       Error error = new StateError("More than one element");
       future._setError(error);
       return;
     }
     foundResult = true;
     result = value;
   },
   onError: future._setError,
   onDone: () {
     if (foundResult) {
       future._setValue(result);
       return;
     }
     future._setError(new StateError("No elements"));
   },
   cancelOnError: true);
 return future;
}

Methods

Future<bool> any(bool test(T element)) #

inherited from Stream

Checks whether test accepts any element provided by this stream.

Completes the Future when the answer is known. If this stream reports an error, the Future will report that error.

Future<bool> any(bool test(T element)) {
 _FutureImpl<bool> future = new _FutureImpl<bool>();
 StreamSubscription subscription;
 subscription = this.listen(
     // TODO(ahe): Restore type when feature is implemented in dart2js
     // checked mode. http://dartbug.com/7733
     (/*T*/ element) {
       _runUserCode(
         () => test(element),
         (bool isMatch) {
           if (isMatch) {
             subscription.cancel();
             future._setValue(true);
           }
         },
         _cancelAndError(subscription, future)
       );
     },
     onError: future._setError,
     onDone: () {
       future._setValue(false);
     },
     cancelOnError: true);
 return future;
}

Stream<T> asBroadcastStream() #

inherited from Stream

Returns a multi-subscription stream that produces the same events as this.

If this stream is single-subscription, return a new stream that allows multiple subscribers. It will subscribe to this stream when its first subscriber is added, and unsubscribe again when the last subscription is cancelled.

If this stream is already a broadcast stream, it is returned unmodified.

Stream<T> asBroadcastStream() {
 if (isBroadcast) return this;
 return new _SingleStreamMultiplexer<T>(this);
}

abstract void close() #

Permanently stops this HttpServer from listening for new connections. This closes this Stream of HttpRequests with a done event.

abstract HttpConnectionsInfo connectionsInfo() #

Returns an HttpConnectionsInfo object summarizing the number of current connections handled by the server.

Future<bool> contains(T match) #

inherited from Stream

Checks whether match occurs in the elements provided by this stream.

Completes the Future when the answer is known. If this stream reports an error, the Future will report that error.

Future<bool> contains(T match) {
 _FutureImpl<bool> future = new _FutureImpl<bool>();
 StreamSubscription subscription;
 subscription = this.listen(
     // TODO(ahe): Restore type when feature is implemented in dart2js
     // checked mode. http://dartbug.com/7733
     (/*T*/ element) {
       _runUserCode(
         () => (element == match),
         (bool isMatch) {
           if (isMatch) {
             subscription.cancel();
             future._setValue(true);
           }
         },
         _cancelAndError(subscription, future)
       );
     },
     onError: future._setError,
     onDone: () {
       future._setValue(false);
     },
     cancelOnError: true);
 return future;
}

Stream<T> distinct([bool equals(T previous, T next)]) #

inherited from Stream

Skips data events if they are equal to the previous data event.

The returned stream provides the same events as this stream, except that it never provides two consequtive data events that are equal.

Equality is determined by the provided equals method. If that is omitted, the '==' operator on the last provided data element is used.

Stream<T> distinct([bool equals(T previous, T next)]) {
 return new _DistinctStream(this, equals);
}

Future<T> elementAt(int index) #

inherited from Stream

Returns the value of the indexth data event of this stream.

If an error event occurs, the future will end with this error.

If this stream provides fewer than index elements before closing, an error is reported.

Future<T> elementAt(int index) {
 if (index is! int || index < 0) throw new ArgumentError(index);
 _FutureImpl<T> future = new _FutureImpl<T>();
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     if (index == 0) {
       subscription.cancel();
       future._setValue(value);
       return;
     }
     index -= 1;
   },
   onError: future._setError,
   onDone: () {
     future._setError(new StateError("Not enough elements for elementAt"));
   },
   cancelOnError: true);
 return future;
}

Future<bool> every(bool test(T element)) #

inherited from Stream

Checks whether test accepts all elements provided by this stream.

Completes the Future when the answer is known. If this stream reports an error, the Future will report that error.

Future<bool> every(bool test(T element)) {
 _FutureImpl<bool> future = new _FutureImpl<bool>();
 StreamSubscription subscription;
 subscription = this.listen(
     // TODO(ahe): Restore type when feature is implemented in dart2js
     // checked mode. http://dartbug.com/7733
     (/*T*/ element) {
       _runUserCode(
         () => test(element),
         (bool isMatch) {
           if (!isMatch) {
             subscription.cancel();
             future._setValue(false);
           }
         },
         _cancelAndError(subscription, future)
       );
     },
     onError: future._setError,
     onDone: () {
       future._setValue(true);
     },
     cancelOnError: true);
 return future;
}

Stream expand(Iterable convert(T value)) #

inherited from Stream

Creates a new stream from this stream that converts each element into zero or more events.

Each incoming event is converted to an Iterable of new events, and each of these new events are then sent by the returned stream in order.

Stream expand(Iterable convert(T value)) {
 return new _ExpandStream<T, dynamic>(this, convert);
}

Future<T> firstWhere(bool test(T value), {T defaultValue()}) #

inherited from Stream

Finds the first element of this stream matching test.

Returns a future that is filled with the first element of this stream that test returns true for.

If no such element is found before this stream is done, and a defaultValue function is provided, the result of calling defaultValue becomes the value of the future.

If an error occurs, or if this stream ends without finding a match and with no defaultValue function provided, the future will receive an error.

Future<T> firstWhere(bool test(T value), {T defaultValue()}) {
 _FutureImpl<T> future = new _FutureImpl<T>();
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     _runUserCode(
       () => test(value),
       (bool isMatch) {
         if (isMatch) {
           subscription.cancel();
           future._setValue(value);
         }
       },
       _cancelAndError(subscription, future)
     );
   },
   onError: future._setError,
   onDone: () {
     if (defaultValue != null) {
       _runUserCode(defaultValue, future._setValue, future._setError);
       return;
     }
     future._setError(new StateError("firstMatch ended without match"));
   },
   cancelOnError: true);
 return future;
}

Future fold(initialValue, combine(previous, T element)) #

inherited from Stream

Reduces a sequence of values by repeatedly applying combine.

Future fold(var initialValue, combine(var previous, T element)) {
 _FutureImpl result = new _FutureImpl();
 var value = initialValue;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ element) {
     _runUserCode(
       () => combine(value, element),
       (newValue) { value = newValue; },
       _cancelAndError(subscription, result)
     );
   },
   onError: (e) {
     result._setError(e);
   },
   onDone: () {
     result._setValue(value);
   },
   cancelOnError: true);
 return result;
}

Future forEach(void action(T element)) #

inherited from Stream

Executes action on each data event of the stream.

Completes the returned Future when all events of the stream have been processed. Completes the future with an error if the stream has an error event, or if action throws.

Future forEach(void action(T element)) {
 _FutureImpl future = new _FutureImpl();
 StreamSubscription subscription;
 subscription = this.listen(
     // TODO(ahe): Restore type when feature is implemented in dart2js
     // checked mode. http://dartbug.com/7733
     (/*T*/ element) {
       _runUserCode(
         () => action(element),
         (_) {},
         _cancelAndError(subscription, future)
       );
     },
     onError: future._setError,
     onDone: () {
       future._setValue(null);
     },
     cancelOnError: true);
 return future;
}

Stream<T> handleError(void handle(error), {bool test(error)}) #

inherited from Stream

Creates a wrapper Stream that intercepts some errors from this stream.

If this stream sends an error that matches test, then it is intercepted by the handle function.

An [AsyncError] [:e:] is matched by a test function if test(e) returns true. If test is omitted, every error is considered matching.

If the error is intercepted, the handle function can decide what to do with it. It can throw if it wants to raise a new (or the same) error, or simply return to make the stream forget the error.

If you need to transform an error into a data event, use the more generic Stream.transformEvent to handle the event by writing a data event to the output sink

Stream<T> handleError(void handle( error), { bool test(error) }) {
 return new _HandleErrorStream<T>(this, handle, test);
}

Future<T> lastWhere(bool test(T value), {T defaultValue()}) #

inherited from Stream

Finds the last element in this stream matching test.

As firstWhere, except that the last matching element is found. That means that the result cannot be provided before this stream is done.

Future<T> lastWhere(bool test(T value), {T defaultValue()}) {
 _FutureImpl<T> future = new _FutureImpl<T>();
 T result = null;
 bool foundResult = false;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     _runUserCode(
       () => true == test(value),
       (bool isMatch) {
         if (isMatch) {
           foundResult = true;
           result = value;
         }
       },
       _cancelAndError(subscription, future)
     );
   },
   onError: future._setError,
   onDone: () {
     if (foundResult) {
       future._setValue(result);
       return;
     }
     if (defaultValue != null) {
       _runUserCode(defaultValue, future._setValue, future._setError);
       return;
     }
     future._setError(new StateError("lastMatch ended without match"));
   },
   cancelOnError: true);
 return future;
}

abstract StreamSubscription<T> listen(void onData(T event), {void onError(error), void onDone(), bool cancelOnError}) #

inherited from Stream

Adds a subscription to this stream.

On each data event from this stream, the subscriber's onData handler is called. If onData is null, nothing happens.

On errors from this stream, the onError handler is given a object describing the error.

If this stream closes, the onDone handler is called.

If cancelOnError is true, the subscription is ended when the first error is reported. The default is false.

Stream map(convert(T event)) #

inherited from Stream

Creates a new stream that converts each element of this stream to a new value using the convert function.

Stream map(convert(T event)) {
 return new _MapStream<T, dynamic>(this, convert);
}

Future pipe(StreamConsumer<T> streamConsumer) #

inherited from Stream

Binds this stream as the input of the provided StreamConsumer.

Future pipe(StreamConsumer<T> streamConsumer) {
 return streamConsumer.addStream(this).then((_) => streamConsumer.close());
}

Future<T> reduce(T combine(T previous, T element)) #

inherited from Stream

Reduces a sequence of values by repeatedly applying combine.

Future<T> reduce(T combine(T previous, T element)) {
 _FutureImpl<T> result = new _FutureImpl<T>();
 bool seenFirst = false;
 T value;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/* T */ element) {
     if (seenFirst) {
       _runUserCode(() => combine(value, element),
                    (T newValue) { value = newValue; },
                    _cancelAndError(subscription, result));
     } else {
       value = element;
       seenFirst = true;
     }
   },
   onError: result._setError,
   onDone: () {
     if (!seenFirst) {
       result._setError(new StateError("No elements"));
     } else {
       result._setValue(value);
     }
   },
   cancelOnError: true
 );
 return result;
}

Future<T> singleWhere(bool test(T value)) #

inherited from Stream

Finds the single element in this stream matching test.

Like lastMatch, except that it is an error if more than one matching element occurs in the stream.

Future<T> singleWhere(bool test(T value)) {
 _FutureImpl<T> future = new _FutureImpl<T>();
 T result = null;
 bool foundResult = false;
 StreamSubscription subscription;
 subscription = this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ value) {
     _runUserCode(
       () => true == test(value),
       (bool isMatch) {
         if (isMatch) {
           if (foundResult) {
             subscription.cancel();
             future._setError(
                 new StateError('Multiple matches for "single"'));
             return;
           }
           foundResult = true;
           result = value;
         }
       },
       _cancelAndError(subscription, future)
     );
   },
   onError: future._setError,
   onDone: () {
     if (foundResult) {
       future._setValue(result);
       return;
     }
     future._setError(new StateError("single ended without match"));
   },
   cancelOnError: true);
 return future;
}

Stream<T> skip(int count) #

inherited from Stream

Skips the first count data events from this stream.

Stream<T> skip(int count) {
 return new _SkipStream(this, count);
}

Stream<T> skipWhile(bool test(T value)) #

inherited from Stream

Skip data events from this stream while they are matched by test.

Error and done events are provided by the returned stream unmodified.

Starting with the first data event where test returns true for the event data, the returned stream will have the same events as this stream.

Stream<T> skipWhile(bool test(T value)) {
 return new _SkipWhileStream(this, test);
}

Stream<T> take(int count) #

inherited from Stream

Provides at most the first n values of this stream.

Forwards the first n data events of this stream, and all error events, to the returned stream, and ends with a done event.

If this stream produces fewer than count values before it's done, so will the returned stream.

Stream<T> take(int count) {
 return new _TakeStream(this, count);
}

Stream<T> takeWhile(bool test(T value)) #

inherited from Stream

Forwards data events while test is successful.

The returned stream provides the same events as this stream as long as test returns true for the event data. The stream is done when either this stream is done, or when this stream first provides a value that test doesn't accept.

Stream<T> takeWhile(bool test(T value)) {
 return new _TakeWhileStream(this, test);
}

Future<List<T>> toList() #

inherited from Stream

Collects the data of this stream in a List.

Future<List<T>> toList() {
 List<T> result = <T>[];
 _FutureImpl<List<T>> future = new _FutureImpl<List<T>>();
 this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ data) {
     result.add(data);
   },
   onError: future._setError,
   onDone: () {
     future._setValue(result);
   },
   cancelOnError: true);
 return future;
}

Future<Set<T>> toSet() #

inherited from Stream

Collects the data of this stream in a Set.

Future<Set<T>> toSet() {
 Set<T> result = new Set<T>();
 _FutureImpl<Set<T>> future = new _FutureImpl<Set<T>>();
 this.listen(
   // TODO(ahe): Restore type when feature is implemented in dart2js
   // checked mode. http://dartbug.com/7733
   (/*T*/ data) {
     result.add(data);
   },
   onError: future._setError,
   onDone: () {
     future._setValue(result);
   },
   cancelOnError: true);
 return future;
}

Stream transform(StreamTransformer<T, dynamic> streamTransformer) #

inherited from Stream

Chains this stream as the input of the provided StreamTransformer.

Returns the result of streamTransformer.bind itself.

Stream transform(StreamTransformer<T, dynamic> streamTransformer) {
 return streamTransformer.bind(this);
}

Stream<T> where(bool test(T event)) #

inherited from Stream

Creates a new stream from this stream that discards some data events.

The new stream sends the same error and done events as this stream, but it only sends the data events that satisfy the test.

Stream<T> where(bool test(T event)) {
 return new _WhereStream<T>(this, test);
}