Index: third_party/mojo/src/mojo/public/dart/lib/src/proxy.dart |
diff --git a/third_party/mojo/src/mojo/public/dart/lib/src/proxy.dart b/third_party/mojo/src/mojo/public/dart/lib/src/proxy.dart |
deleted file mode 100644 |
index 528e13a1d9c55b9a00bfeb9ddd31bdb7a22c605c..0000000000000000000000000000000000000000 |
--- a/third_party/mojo/src/mojo/public/dart/lib/src/proxy.dart |
+++ /dev/null |
@@ -1,170 +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 bindings; |
- |
-class ProxyCloseException { |
- final String message; |
- ProxyCloseException(this.message); |
- String toString() => message; |
-} |
- |
-abstract class Proxy extends core.MojoEventStreamListener { |
- Map<int, Completer> _completerMap; |
- int _nextId = 0; |
- int _version = 0; |
- /// Version of this interface that the remote side supports. Updated when a |
- /// call to [queryVersion] or [requireVersion] is made. |
- int get version => _version; |
- |
- Proxy.fromEndpoint(core.MojoMessagePipeEndpoint endpoint) |
- : _completerMap = {}, |
- super.fromEndpoint(endpoint); |
- |
- Proxy.fromHandle(core.MojoHandle handle) |
- : _completerMap = {}, |
- super.fromHandle(handle); |
- |
- Proxy.unbound() |
- : _completerMap = {}, |
- super.unbound(); |
- |
- void handleResponse(ServiceMessage reader); |
- |
- void handleRead() { |
- // Query how many bytes are available. |
- var result = endpoint.query(); |
- assert(result.status.isOk || result.status.isResourceExhausted); |
- |
- // Read the data. |
- var bytes = new ByteData(result.bytesRead); |
- var handles = new List<core.MojoHandle>(result.handlesRead); |
- result = endpoint.read(bytes, result.bytesRead, handles); |
- assert(result.status.isOk || result.status.isResourceExhausted); |
- var message = new ServiceMessage.fromMessage(new Message(bytes, handles)); |
- if (ControlMessageHandler.isControlMessage(message)) { |
- _handleControlMessageResponse(message); |
- return; |
- } |
- handleResponse(message); |
- } |
- |
- void handleWrite() { |
- throw 'Unexpected write signal in proxy.'; |
- } |
- |
- @override |
- Future close({bool immediate: false}) { |
- for (var completer in _completerMap.values) { |
- completer.completeError(new ProxyCloseException('Proxy closed')); |
- } |
- _completerMap.clear(); |
- return super.close(immediate: immediate); |
- } |
- |
- void sendMessage(Struct message, int name) { |
- if (!isOpen) { |
- listen(); |
- } |
- var header = new MessageHeader(name); |
- var serviceMessage = message.serializeWithHeader(header); |
- endpoint.write(serviceMessage.buffer, |
- serviceMessage.buffer.lengthInBytes, serviceMessage.handles); |
- if (!endpoint.status.isOk) { |
- throw "message pipe write failed - ${endpoint.status}"; |
- } |
- } |
- |
- Future sendMessageWithRequestId(Struct message, int name, int id, int flags) { |
- if (!isOpen) { |
- listen(); |
- } |
- if (id == -1) { |
- id = _nextId++; |
- } |
- |
- var header = new MessageHeader.withRequestId(name, flags, id); |
- var serviceMessage = message.serializeWithHeader(header); |
- endpoint.write(serviceMessage.buffer, |
- serviceMessage.buffer.lengthInBytes, serviceMessage.handles); |
- if (!endpoint.status.isOk) { |
- throw "message pipe write failed - ${endpoint.status}"; |
- } |
- |
- var completer = new Completer(); |
- _completerMap[id] = completer; |
- return completer.future; |
- } |
- |
- // Need a getter for this for access in subclasses. |
- Map<int, Completer> get completerMap => _completerMap; |
- |
- String toString() { |
- var superString = super.toString(); |
- return "Proxy(${superString})"; |
- } |
- |
- /// Queries the max version that the remote side supports. |
- /// Updates [version]. |
- Future<int> queryVersion() async { |
- var params = new icm.RunMessageParams(); |
- params.reserved0 = 16; |
- params.reserved1 = 0; |
- params.queryVersion = new icm.QueryVersion(); |
- var response = await |
- sendMessageWithRequestId(params, |
- icm.kRunMessageId, |
- -1, |
- MessageHeader.kMessageExpectsResponse); |
- _version = response.queryVersionResult.version; |
- return _version; |
- } |
- |
- /// If the remote side doesn't support the [requiredVersion], it will close |
- /// its end of the message pipe asynchronously. This does nothing if it's |
- /// already known that the remote side supports [requiredVersion]. |
- /// Updates [version]. |
- void requireVersion(int requiredVersion) { |
- if (requiredVersion <= _version) { |
- // Already supported. |
- return; |
- } |
- |
- // If the remote end doesn't close the pipe, we know that it supports |
- // required version. |
- _version = requiredVersion; |
- |
- var params = new icm.RunOrClosePipeMessageParams(); |
- params.reserved0 = 16; |
- params.reserved1 = 0; |
- params.requireVersion = new icm.RequireVersion(); |
- params.requireVersion.version = requiredVersion; |
- // TODO(johnmccutchan): We've set _version above but if this sendMessage |
- // throws an exception we may not have sent the RunOrClose message. Should |
- // we reset _version in that case? |
- sendMessage(params, icm.kRunOrClosePipeMessageId); |
- } |
- |
- _handleControlMessageResponse(ServiceMessage message) { |
- // We only expect to see Run messages. |
- assert(message.header.type == icm.kRunMessageId); |
- var response = icm.RunResponseMessageParams.deserialize(message.payload); |
- if (!message.header.hasRequestId) { |
- throw 'Expected a message with a valid request Id.'; |
- } |
- Completer c = completerMap[message.header.requestId]; |
- if (c == null) { |
- throw 'Message had unknown request Id: ${message.header.requestId}'; |
- } |
- completerMap.remove(message.header.requestId); |
- assert(!c.isCompleted); |
- c.complete(response); |
- } |
-} |
- |
-// Generated Proxy classes implement this interface. |
-abstract class ProxyBase { |
- final Proxy impl = null; |
- final String name = null; |
-} |