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

Side by Side Diff: mojo/public/dart/mojo/lib/src/proxy.dart

Issue 1414483010: Dart: Use a RawReceivePort to receive events for Mojo handles. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « mojo/public/dart/mojo/lib/src/handle.dart ('k') | mojo/public/dart/mojo/lib/src/stub.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 part of bindings; 5 part of bindings;
6 6
7 class ProxyError { 7 class ProxyError {
8 final String message; 8 final String message;
9 ProxyError(this.message); 9 ProxyError(this.message);
10 String toString() => "ProxyError: $message"; 10 String toString() => "ProxyError: $message";
11 } 11 }
12 12
13 abstract class Proxy extends core.MojoEventStreamListener { 13 abstract class Proxy extends core.MojoEventHandler {
14 final Map<int, Completer> _completerMap = {}; 14 Map<int, Completer> _completerMap = {};
15 Completer _errorCompleter = new Completer(); 15 Completer _errorCompleter = new Completer();
16 Set<Completer> _errorCompleters; 16 Set<Completer> _errorCompleters;
17 int _nextId = 0; 17 int _nextId = 0;
18 int _version = 0; 18 int _version = 0;
19 int _pendingCount = 0; 19 int _pendingCount = 0;
20 20
21 Proxy.fromEndpoint(core.MojoMessagePipeEndpoint endpoint) 21 Proxy.fromEndpoint(core.MojoMessagePipeEndpoint endpoint)
22 : super.fromEndpoint(endpoint); 22 : super.fromEndpoint(endpoint);
23 23
24 Proxy.fromHandle(core.MojoHandle handle) : super.fromHandle(handle); 24 Proxy.fromHandle(core.MojoHandle handle) : super.fromHandle(handle);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 return super.close(immediate: immediate); 74 return super.close(immediate: immediate);
75 } 75 }
76 76
77 void sendMessage(Struct message, int name) { 77 void sendMessage(Struct message, int name) {
78 if (!isBound) { 78 if (!isBound) {
79 proxyError("The Proxy is closed."); 79 proxyError("The Proxy is closed.");
80 return; 80 return;
81 } 81 }
82 if (!isOpen) { 82 if (!isOpen) {
83 listen(); 83 beginHandlingEvents();
84 } 84 }
85 var header = new MessageHeader(name); 85 var header = new MessageHeader(name);
86
87 var serviceMessage = message.serializeWithHeader(header); 86 var serviceMessage = message.serializeWithHeader(header);
88 endpoint.write(serviceMessage.buffer, serviceMessage.buffer.lengthInBytes, 87 endpoint.write(serviceMessage.buffer, serviceMessage.buffer.lengthInBytes,
89 serviceMessage.handles); 88 serviceMessage.handles);
90 if (!endpoint.status.isOk) { 89 if (!endpoint.status.isOk) {
91 proxyError("Write to message pipe endpoint failed."); 90 proxyError("Write to message pipe endpoint failed.");
92 } 91 }
93 } 92 }
94 93
95 Future sendMessageWithRequestId(Struct message, int name, int id, int flags) { 94 Future sendMessageWithRequestId(Struct message, int name, int id, int flags) {
96 var completer = new Completer(); 95 var completer = new Completer();
97 if (!isBound) { 96 if (!isBound) {
98 proxyError("The Proxy is closed."); 97 proxyError("The Proxy is closed.");
99 return completer.future; 98 return completer.future;
100 } 99 }
101 if (!isOpen) { 100 if (!isOpen) {
102 listen(); 101 beginHandlingEvents();
103 } 102 }
104 if (id == -1) { 103 if (id == -1) {
105 id = _nextId++; 104 id = _nextId++;
106 } 105 }
107 106
108 var header = new MessageHeader.withRequestId(name, flags, id); 107 var header = new MessageHeader.withRequestId(name, flags, id);
109 var serviceMessage = message.serializeWithHeader(header); 108 var serviceMessage = message.serializeWithHeader(header);
110 endpoint.write(serviceMessage.buffer, serviceMessage.buffer.lengthInBytes, 109 endpoint.write(serviceMessage.buffer, serviceMessage.buffer.lengthInBytes,
111 serviceMessage.handles); 110 serviceMessage.handles);
112 111
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 239
241 // Generated Proxy classes implement this interface. 240 // Generated Proxy classes implement this interface.
242 abstract class ProxyBase { 241 abstract class ProxyBase {
243 final Proxy impl = null; 242 final Proxy impl = null;
244 final String name = null; 243 final String name = null;
245 } 244 }
246 245
247 abstract class ServiceConnector { 246 abstract class ServiceConnector {
248 void connectToService(String url, ProxyBase proxy); 247 void connectToService(String url, ProxyBase proxy);
249 } 248 }
OLDNEW
« no previous file with comments | « mojo/public/dart/mojo/lib/src/handle.dart ('k') | mojo/public/dart/mojo/lib/src/stub.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698