OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |