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

Unified Diff: mojo/public/dart/src/event_stream.dart

Issue 814543006: Move //mojo/{public, edk} underneath //third_party (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/dart/src/data_pipe.dart ('k') | mojo/public/dart/src/handle.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/dart/src/event_stream.dart
diff --git a/mojo/public/dart/src/event_stream.dart b/mojo/public/dart/src/event_stream.dart
deleted file mode 100644
index 797f0e6775d6f5fd7996e336f8519ca07a294cfc..0000000000000000000000000000000000000000
--- a/mojo/public/dart/src/event_stream.dart
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-part of core;
-
-class MojoEventStream extends Stream<int> {
- // The underlying Mojo handle.
- MojoHandle _handle;
-
- // Providing our own stream controller allows us to take custom actions when
- // listeners pause/resume/etc. their StreamSubscription.
- StreamController _controller;
-
- // The send port that we give to the handle watcher to notify us of handle
- // events.
- SendPort _sendPort;
-
- // The receive port on which we listen and receive events from the handle
- // watcher.
- ReceivePort _receivePort;
-
- // The signals on this handle that we're interested in.
- MojoHandleSignals _signals;
-
- // Whether listen has been called.
- bool _isListening;
-
- MojoEventStream(MojoHandle handle,
- [MojoHandleSignals signals = MojoHandleSignals.READABLE]) :
- _handle = handle,
- _signals = signals,
- _isListening = false {
- MojoResult result = MojoHandle.register(this);
- if (!result.isOk) {
- throw "Failed to register the MojoHandle: $result.";
- }
- }
-
- void close() {
- if (_handle != null) {
- MojoHandleWatcher.close(_handle);
- _handle = null;
- }
- if (_receivePort != null) {
- _receivePort.close();
- _receivePort = null;
- }
- }
-
- StreamSubscription<List<int>> listen(
- void onData(List event),
- {Function onError, void onDone(), bool cancelOnError}) {
- if (_isListening) {
- throw "Listen has already been called: $_handle.";
- }
- _receivePort = new ReceivePort();
- _sendPort = _receivePort.sendPort;
- _controller = new StreamController(sync: true,
- onListen: _onSubscriptionStateChange,
- onCancel: _onSubscriptionStateChange,
- onPause: _onPauseStateChange,
- onResume: _onPauseStateChange);
- _controller.addStream(_receivePort);
-
- if (_signals != MojoHandleSignals.NONE) {
- var res = MojoHandleWatcher.add(_handle, _sendPort, _signals.value);
- if (!res.isOk) {
- throw "MojoHandleWatcher add failed: $res";
- }
- }
-
- _isListening = true;
- return _controller.stream.listen(
- onData,
- onError: onError,
- onDone: onDone,
- cancelOnError: cancelOnError);
- }
-
- void enableSignals(MojoHandleSignals signals) {
- _signals = signals;
- if (_isListening) {
- var res = MojoHandleWatcher.add(_handle, _sendPort, signals.value);
- if (!res.isOk) {
- throw "MojoHandleWatcher add failed: $res";
- }
- }
- }
-
- void enableReadEvents() => enableSignals(MojoHandleSignals.READABLE);
- void enableWriteEvents() => enableSignals(MojoHandleSignals.WRITABLE);
- void enableAllEvents() => enableSignals(MojoHandleSignals.READWRITE);
-
- void _onSubscriptionStateChange() {
- if (!_controller.hasListener) {
- close();
- }
- }
-
- void _onPauseStateChange() {
- if (_controller.isPaused) {
- var res = MojoHandleWatcher.remove(_handle);
- if (!res.isOk) {
- throw "MojoHandleWatcher add failed: $res";
- }
- } else {
- var res = MojoHandleWatcher.add(_handle, _sendPort, _signals.value);
- if (!res.isOk) {
- throw "MojoHandleWatcher add failed: $res";
- }
- }
- }
-
- bool get readyRead => _handle.readyRead;
- bool get readyWrite => _handle.readyWrite;
-
- String toString() => "$_handle";
-}
-
-
-class MojoEventStreamListener {
- MojoMessagePipeEndpoint _endpoint;
- MojoEventStream _eventStream;
- bool _isOpen = false;
- bool _isInHandler = false;
-
- MojoEventStreamListener(MojoMessagePipeEndpoint endpoint) :
- _endpoint = endpoint,
- _eventStream = new MojoEventStream(endpoint.handle),
- _isOpen = false;
-
- MojoEventStreamListener.fromHandle(MojoHandle handle) {
- _endpoint = new MojoMessagePipeEndpoint(handle);
- _eventStream = new MojoEventStream(handle);
- _isOpen = false;
- }
-
- MojoEventStreamListener.unbound() :
- _endpoint = null,
- _eventStream = null,
- _isOpen = false;
-
- void bind(MojoMessagePipeEndpoint endpoint) {
- assert(!isBound);
- _endpoint = endpoint;
- _eventStream = new MojoEventStream(endpoint.handle);
- _isOpen = false;
- }
-
- void bindFromHandle(MojoHandle handle) {
- assert(!isBound);
- _endpoint = new MojoMessagePipeEndpoint(handle);
- _eventStream = new MojoEventStream(handle);
- _isOpen = false;
- }
-
- StreamSubscription<int> listen() {
- _isOpen = true;
- return _eventStream.listen((List<int> event) {
- var signalsWatched = new MojoHandleSignals(event[0]);
- var signalsReceived = new MojoHandleSignals(event[1]);
- if (signalsReceived.isPeerClosed) {
- handlePeerClosed();
- // The peer being closed obviates any other signal we might
- // have received since we won't be able to read or write the handle.
- // Thus, we just return before invoking other handlers.
- return;
- }
- _isInHandler = true;
- if (signalsReceived.isReadable) {
- assert(_eventStream.readyRead);
- handleRead();
- }
- if (signalsReceived.isWritable) {
- assert(_eventStream.readyWrite);
- handleWrite();
- }
- _eventStream.enableSignals(enableSignals(
- signalsWatched, signalsReceived));
- _isInHandler = false;
- });
- }
-
- void close() {
- if (_isOpen) {
- _eventStream.close();
- _isOpen = false;
- _eventStream = null;
- _endpoint = null;
- }
- }
-
- void handleRead() {}
- void handleWrite() {}
- void handlePeerClosed() {
- close();
- }
-
- MojoHandleSignals enableSignals(MojoHandleSignals watched,
- MojoHandleSignals received) => watched;
-
- MojoMessagePipeEndpoint get endpoint => _endpoint;
- bool get isOpen => _isOpen;
- bool get isInHandler => _isInHandler;
- bool get isBound => _endpoint != null;
-}
« no previous file with comments | « mojo/public/dart/src/data_pipe.dart ('k') | mojo/public/dart/src/handle.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698