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 library icu_data_mojom; | 5 library icu_data_mojom; |
6 import 'dart:async'; | 6 import 'dart:async'; |
7 import 'package:mojo/bindings.dart' as bindings; | 7 import 'package:mojo/bindings.dart' as bindings; |
8 import 'package:mojo/core.dart' as core; | 8 import 'package:mojo/core.dart' as core; |
9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic
e_describer; | 9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic
e_describer; |
10 | 10 |
11 | 11 |
12 | 12 |
13 class _IcuDataMapParams extends bindings.Struct { | 13 class _IcuDataMapParams extends bindings.Struct { |
14 static const List<bindings.StructDataHeader> kVersions = const [ | 14 static const List<bindings.StructDataHeader> kVersions = const [ |
15 const bindings.StructDataHeader(16, 0) | 15 const bindings.StructDataHeader(16, 0) |
16 ]; | 16 ]; |
17 String sha1hash = null; | 17 String sha1hash = null; |
18 | 18 |
19 _IcuDataMapParams() : super(kVersions.last.size); | 19 _IcuDataMapParams() : super(kVersions.last.size); |
20 | 20 |
| 21 _IcuDataMapParams.init( |
| 22 String this.sha1hash |
| 23 ) : super(kVersions.last.size); |
| 24 |
21 static _IcuDataMapParams deserialize(bindings.Message message) { | 25 static _IcuDataMapParams deserialize(bindings.Message message) { |
22 var decoder = new bindings.Decoder(message); | 26 var decoder = new bindings.Decoder(message); |
23 var result = decode(decoder); | 27 var result = decode(decoder); |
24 if (decoder.excessHandles != null) { | 28 if (decoder.excessHandles != null) { |
25 decoder.excessHandles.forEach((h) => h.close()); | 29 decoder.excessHandles.forEach((h) => h.close()); |
26 } | 30 } |
27 return result; | 31 return result; |
28 } | 32 } |
29 | 33 |
30 static _IcuDataMapParams decode(bindings.Decoder decoder0) { | 34 static _IcuDataMapParams decode(bindings.Decoder decoder0) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 | 87 |
84 | 88 |
85 class IcuDataMapResponseParams extends bindings.Struct { | 89 class IcuDataMapResponseParams extends bindings.Struct { |
86 static const List<bindings.StructDataHeader> kVersions = const [ | 90 static const List<bindings.StructDataHeader> kVersions = const [ |
87 const bindings.StructDataHeader(16, 0) | 91 const bindings.StructDataHeader(16, 0) |
88 ]; | 92 ]; |
89 core.MojoSharedBuffer icuData = null; | 93 core.MojoSharedBuffer icuData = null; |
90 | 94 |
91 IcuDataMapResponseParams() : super(kVersions.last.size); | 95 IcuDataMapResponseParams() : super(kVersions.last.size); |
92 | 96 |
| 97 IcuDataMapResponseParams.init( |
| 98 core.MojoSharedBuffer this.icuData |
| 99 ) : super(kVersions.last.size); |
| 100 |
93 static IcuDataMapResponseParams deserialize(bindings.Message message) { | 101 static IcuDataMapResponseParams deserialize(bindings.Message message) { |
94 var decoder = new bindings.Decoder(message); | 102 var decoder = new bindings.Decoder(message); |
95 var result = decode(decoder); | 103 var result = decode(decoder); |
96 if (decoder.excessHandles != null) { | 104 if (decoder.excessHandles != null) { |
97 decoder.excessHandles.forEach((h) => h.close()); | 105 decoder.excessHandles.forEach((h) => h.close()); |
98 } | 106 } |
99 return result; | 107 return result; |
100 } | 108 } |
101 | 109 |
102 static IcuDataMapResponseParams decode(bindings.Decoder decoder0) { | 110 static IcuDataMapResponseParams decode(bindings.Decoder decoder0) { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 156 |
149 Map toJson() { | 157 Map toJson() { |
150 throw new bindings.MojoCodecError( | 158 throw new bindings.MojoCodecError( |
151 'Object containing handles cannot be encoded to JSON.'); | 159 'Object containing handles cannot be encoded to JSON.'); |
152 } | 160 } |
153 } | 161 } |
154 | 162 |
155 const int _icuDataMethodMapName = 0; | 163 const int _icuDataMethodMapName = 0; |
156 | 164 |
157 class _IcuDataServiceDescription implements service_describer.ServiceDescription
{ | 165 class _IcuDataServiceDescription implements service_describer.ServiceDescription
{ |
158 dynamic getTopLevelInterface([Function responseFactory]) => | 166 void getTopLevelInterface(Function responder) { |
159 responseFactory(null); | 167 responder(null); |
| 168 } |
160 | 169 |
161 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 170 void getTypeDefinition(String typeKey, Function responder) { |
162 responseFactory(null); | 171 responder(null); |
| 172 } |
163 | 173 |
164 dynamic getAllTypeDefinitions([Function responseFactory]) => | 174 void getAllTypeDefinitions(Function responder) { |
165 responseFactory(null); | 175 responder(null); |
| 176 } |
166 } | 177 } |
167 | 178 |
168 abstract class IcuData { | 179 abstract class IcuData { |
169 static const String serviceName = "icu_data::ICUData"; | 180 static const String serviceName = "icu_data::ICUData"; |
170 | 181 |
171 static service_describer.ServiceDescription _cachedServiceDescription; | 182 static service_describer.ServiceDescription _cachedServiceDescription; |
172 static service_describer.ServiceDescription get serviceDescription { | 183 static service_describer.ServiceDescription get serviceDescription { |
173 if (_cachedServiceDescription == null) { | 184 if (_cachedServiceDescription == null) { |
174 _cachedServiceDescription = new _IcuDataServiceDescription(); | 185 _cachedServiceDescription = new _IcuDataServiceDescription(); |
175 } | 186 } |
176 return _cachedServiceDescription; | 187 return _cachedServiceDescription; |
177 } | 188 } |
178 | 189 |
179 static IcuDataProxy connectToService( | 190 static IcuDataProxy connectToService( |
180 bindings.ServiceConnector s, String url, [String serviceName]) { | 191 bindings.ServiceConnector s, String url, [String serviceName]) { |
181 IcuDataProxy p = new IcuDataProxy.unbound(); | 192 IcuDataProxy p = new IcuDataProxy.unbound(); |
182 String name = serviceName ?? IcuData.serviceName; | 193 String name = serviceName ?? IcuData.serviceName; |
183 if ((name == null) || name.isEmpty) { | 194 if ((name == null) || name.isEmpty) { |
184 throw new core.MojoApiError( | 195 throw new core.MojoApiError( |
185 "If an interface has no ServiceName, then one must be provided."); | 196 "If an interface has no ServiceName, then one must be provided."); |
186 } | 197 } |
187 s.connectToService(url, p, name); | 198 s.connectToService(url, p, name); |
188 return p; | 199 return p; |
189 } | 200 } |
190 dynamic map(String sha1hash,[Function responseFactory = null]); | 201 void map(String sha1hash,void callback(core.MojoSharedBuffer icuData)); |
191 } | 202 } |
192 | 203 |
193 abstract class IcuDataInterface | 204 abstract class IcuDataInterface |
194 implements bindings.MojoInterface<IcuData>, | 205 implements bindings.MojoInterface<IcuData>, |
195 IcuData { | 206 IcuData { |
196 factory IcuDataInterface([IcuData impl]) => | 207 factory IcuDataInterface([IcuData impl]) => |
197 new IcuDataStub.unbound(impl); | 208 new IcuDataStub.unbound(impl); |
198 factory IcuDataInterface.fromEndpoint( | 209 factory IcuDataInterface.fromEndpoint( |
199 core.MojoMessagePipeEndpoint endpoint, | 210 core.MojoMessagePipeEndpoint endpoint, |
200 [IcuData impl]) => | 211 [IcuData impl]) => |
(...skipping 22 matching lines...) Expand all Loading... |
223 | 234 |
224 void handleResponse(bindings.ServiceMessage message) { | 235 void handleResponse(bindings.ServiceMessage message) { |
225 switch (message.header.type) { | 236 switch (message.header.type) { |
226 case _icuDataMethodMapName: | 237 case _icuDataMethodMapName: |
227 var r = IcuDataMapResponseParams.deserialize( | 238 var r = IcuDataMapResponseParams.deserialize( |
228 message.payload); | 239 message.payload); |
229 if (!message.header.hasRequestId) { | 240 if (!message.header.hasRequestId) { |
230 proxyError("Expected a message with a valid request Id."); | 241 proxyError("Expected a message with a valid request Id."); |
231 return; | 242 return; |
232 } | 243 } |
233 Completer c = completerMap[message.header.requestId]; | 244 Function callback = callbackMap[message.header.requestId]; |
234 if (c == null) { | 245 if (callback == null) { |
235 proxyError( | 246 proxyError( |
236 "Message had unknown request Id: ${message.header.requestId}"); | 247 "Message had unknown request Id: ${message.header.requestId}"); |
237 return; | 248 return; |
238 } | 249 } |
239 completerMap.remove(message.header.requestId); | 250 callbackMap.remove(message.header.requestId); |
240 if (c.isCompleted) { | 251 callback(r.icuData ); |
241 proxyError("Response completer already completed"); | |
242 return; | |
243 } | |
244 c.complete(r); | |
245 break; | 252 break; |
246 default: | 253 default: |
247 proxyError("Unexpected message type: ${message.header.type}"); | 254 proxyError("Unexpected message type: ${message.header.type}"); |
248 close(immediate: true); | 255 close(immediate: true); |
249 break; | 256 break; |
250 } | 257 } |
251 } | 258 } |
252 | 259 |
253 IcuData get impl => null; | 260 IcuData get impl => null; |
254 set impl(IcuData _) { | 261 set impl(IcuData _) { |
(...skipping 22 matching lines...) Expand all Loading... |
277 IcuDataProxy.unbound() | 284 IcuDataProxy.unbound() |
278 : super(new _IcuDataProxyControl.unbound()); | 285 : super(new _IcuDataProxyControl.unbound()); |
279 | 286 |
280 static IcuDataProxy newFromEndpoint( | 287 static IcuDataProxy newFromEndpoint( |
281 core.MojoMessagePipeEndpoint endpoint) { | 288 core.MojoMessagePipeEndpoint endpoint) { |
282 assert(endpoint.setDescription("For IcuDataProxy")); | 289 assert(endpoint.setDescription("For IcuDataProxy")); |
283 return new IcuDataProxy.fromEndpoint(endpoint); | 290 return new IcuDataProxy.fromEndpoint(endpoint); |
284 } | 291 } |
285 | 292 |
286 | 293 |
287 dynamic map(String sha1hash,[Function responseFactory = null]) { | 294 void map(String sha1hash,void callback(core.MojoSharedBuffer icuData)) { |
288 var params = new _IcuDataMapParams(); | 295 var params = new _IcuDataMapParams(); |
289 params.sha1hash = sha1hash; | 296 params.sha1hash = sha1hash; |
290 return ctrl.sendMessageWithRequestId( | 297 ctrl.sendMessageWithRequestId( |
291 params, | 298 params, |
292 _icuDataMethodMapName, | 299 _icuDataMethodMapName, |
293 -1, | 300 -1, |
294 bindings.MessageHeader.kMessageExpectsResponse); | 301 bindings.MessageHeader.kMessageExpectsResponse, |
| 302 callback); |
295 } | 303 } |
296 } | 304 } |
297 | 305 |
298 class _IcuDataStubControl | 306 class _IcuDataStubControl |
299 extends bindings.StubMessageHandler | 307 extends bindings.StubMessageHandler |
300 implements bindings.StubControl<IcuData> { | 308 implements bindings.StubControl<IcuData> { |
301 IcuData _impl; | 309 IcuData _impl; |
302 | 310 |
303 _IcuDataStubControl.fromEndpoint( | 311 _IcuDataStubControl.fromEndpoint( |
304 core.MojoMessagePipeEndpoint endpoint, [IcuData impl]) | 312 core.MojoMessagePipeEndpoint endpoint, [IcuData impl]) |
305 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 313 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
306 _impl = impl; | 314 _impl = impl; |
307 } | 315 } |
308 | 316 |
309 _IcuDataStubControl.fromHandle( | 317 _IcuDataStubControl.fromHandle( |
310 core.MojoHandle handle, [IcuData impl]) | 318 core.MojoHandle handle, [IcuData impl]) |
311 : super.fromHandle(handle, autoBegin: impl != null) { | 319 : super.fromHandle(handle, autoBegin: impl != null) { |
312 _impl = impl; | 320 _impl = impl; |
313 } | 321 } |
314 | 322 |
315 _IcuDataStubControl.unbound([this._impl]) : super.unbound(); | 323 _IcuDataStubControl.unbound([this._impl]) : super.unbound(); |
316 | 324 |
317 String get serviceName => IcuData.serviceName; | 325 String get serviceName => IcuData.serviceName; |
318 | 326 |
319 | 327 |
320 IcuDataMapResponseParams _icuDataMapResponseParamsFactory(core.MojoSharedBuffe
r icuData) { | 328 Function _icuDataMapResponseParamsResponder( |
321 var result = new IcuDataMapResponseParams(); | 329 int requestId) { |
322 result.icuData = icuData; | 330 return (core.MojoSharedBuffer icuData) { |
323 return result; | 331 var result = new IcuDataMapResponseParams(); |
| 332 result.icuData = icuData; |
| 333 sendResponse(buildResponseWithId( |
| 334 result, |
| 335 _icuDataMethodMapName, |
| 336 requestId, |
| 337 bindings.MessageHeader.kMessageIsResponse)); |
| 338 }; |
324 } | 339 } |
325 | 340 |
326 dynamic handleMessage(bindings.ServiceMessage message) { | 341 void handleMessage(bindings.ServiceMessage message) { |
327 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 342 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
328 return bindings.ControlMessageHandler.handleMessage(this, | 343 bindings.ControlMessageHandler.handleMessage( |
329 0, | 344 this, 0, message); |
330 message); | 345 return; |
331 } | 346 } |
332 if (_impl == null) { | 347 if (_impl == null) { |
333 throw new core.MojoApiError("$this has no implementation set"); | 348 throw new core.MojoApiError("$this has no implementation set"); |
334 } | 349 } |
335 switch (message.header.type) { | 350 switch (message.header.type) { |
336 case _icuDataMethodMapName: | 351 case _icuDataMethodMapName: |
337 var params = _IcuDataMapParams.deserialize( | 352 var params = _IcuDataMapParams.deserialize( |
338 message.payload); | 353 message.payload); |
339 var response = _impl.map(params.sha1hash,_icuDataMapResponseParamsFactor
y); | 354 _impl.map(params.sha1hash, _icuDataMapResponseParamsResponder(message.he
ader.requestId)); |
340 if (response is Future) { | |
341 return response.then((response) { | |
342 if (response != null) { | |
343 return buildResponseWithId( | |
344 response, | |
345 _icuDataMethodMapName, | |
346 message.header.requestId, | |
347 bindings.MessageHeader.kMessageIsResponse); | |
348 } | |
349 }); | |
350 } else if (response != null) { | |
351 return buildResponseWithId( | |
352 response, | |
353 _icuDataMethodMapName, | |
354 message.header.requestId, | |
355 bindings.MessageHeader.kMessageIsResponse); | |
356 } | |
357 break; | 355 break; |
358 default: | 356 default: |
359 throw new bindings.MojoCodecError("Unexpected message name"); | 357 throw new bindings.MojoCodecError("Unexpected message name"); |
360 break; | 358 break; |
361 } | 359 } |
362 return null; | |
363 } | 360 } |
364 | 361 |
365 IcuData get impl => _impl; | 362 IcuData get impl => _impl; |
366 set impl(IcuData d) { | 363 set impl(IcuData d) { |
367 if (d == null) { | 364 if (d == null) { |
368 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 365 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
369 } | 366 } |
370 if (isBound && (_impl == null)) { | 367 if (isBound && (_impl == null)) { |
371 beginHandlingEvents(); | 368 beginHandlingEvents(); |
372 } | 369 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 core.MojoHandle handle, [IcuData impl]) | 403 core.MojoHandle handle, [IcuData impl]) |
407 : super(new _IcuDataStubControl.fromHandle(handle, impl)); | 404 : super(new _IcuDataStubControl.fromHandle(handle, impl)); |
408 | 405 |
409 static IcuDataStub newFromEndpoint( | 406 static IcuDataStub newFromEndpoint( |
410 core.MojoMessagePipeEndpoint endpoint) { | 407 core.MojoMessagePipeEndpoint endpoint) { |
411 assert(endpoint.setDescription("For IcuDataStub")); | 408 assert(endpoint.setDescription("For IcuDataStub")); |
412 return new IcuDataStub.fromEndpoint(endpoint); | 409 return new IcuDataStub.fromEndpoint(endpoint); |
413 } | 410 } |
414 | 411 |
415 | 412 |
416 dynamic map(String sha1hash,[Function responseFactory = null]) { | 413 void map(String sha1hash,void callback(core.MojoSharedBuffer icuData)) { |
417 return impl.map(sha1hash,responseFactory); | 414 return impl.map(sha1hash,callback); |
418 } | 415 } |
419 } | 416 } |
420 | 417 |
421 | 418 |
422 | 419 |
OLD | NEW |