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

Side by Side Diff: mojo/dart/packages/mojo_services/lib/mojo/files/files.mojom.dart

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Cleanup Created 4 years, 6 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 unified diff | Download patch
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 library files_mojom; 5 library files_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 import 'package:mojo_services/mojo/files/directory.mojom.dart' as directory_mojo m; 10 import 'package:mojo_services/mojo/files/directory.mojom.dart' as directory_mojo m;
11 import 'package:mojo_services/mojo/files/types.mojom.dart' as types_mojom; 11 import 'package:mojo_services/mojo/files/types.mojom.dart' as types_mojom;
12 12
13 13
14 14
15 class _FilesOpenFileSystemParams extends bindings.Struct { 15 class _FilesOpenFileSystemParams extends bindings.Struct {
16 static const List<bindings.StructDataHeader> kVersions = const [ 16 static const List<bindings.StructDataHeader> kVersions = const [
17 const bindings.StructDataHeader(24, 0) 17 const bindings.StructDataHeader(24, 0)
18 ]; 18 ];
19 String fileSystem = null; 19 String fileSystem = null;
20 directory_mojom.DirectoryInterfaceRequest directory = null; 20 directory_mojom.DirectoryInterfaceRequest directory = null;
21 21
22 _FilesOpenFileSystemParams() : super(kVersions.last.size); 22 _FilesOpenFileSystemParams() : super(kVersions.last.size);
23 23
24 _FilesOpenFileSystemParams.init(
25 String this.fileSystem,
26 directory_mojom.DirectoryInterfaceRequest this.directory
27 ) : super(kVersions.last.size);
28
24 static _FilesOpenFileSystemParams deserialize(bindings.Message message) { 29 static _FilesOpenFileSystemParams deserialize(bindings.Message message) {
25 var decoder = new bindings.Decoder(message); 30 var decoder = new bindings.Decoder(message);
26 var result = decode(decoder); 31 var result = decode(decoder);
27 if (decoder.excessHandles != null) { 32 if (decoder.excessHandles != null) {
28 decoder.excessHandles.forEach((h) => h.close()); 33 decoder.excessHandles.forEach((h) => h.close());
29 } 34 }
30 return result; 35 return result;
31 } 36 }
32 37
33 static _FilesOpenFileSystemParams decode(bindings.Decoder decoder0) { 38 static _FilesOpenFileSystemParams decode(bindings.Decoder decoder0) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 102
98 103
99 class FilesOpenFileSystemResponseParams extends bindings.Struct { 104 class FilesOpenFileSystemResponseParams extends bindings.Struct {
100 static const List<bindings.StructDataHeader> kVersions = const [ 105 static const List<bindings.StructDataHeader> kVersions = const [
101 const bindings.StructDataHeader(16, 0) 106 const bindings.StructDataHeader(16, 0)
102 ]; 107 ];
103 types_mojom.Error error = null; 108 types_mojom.Error error = null;
104 109
105 FilesOpenFileSystemResponseParams() : super(kVersions.last.size); 110 FilesOpenFileSystemResponseParams() : super(kVersions.last.size);
106 111
112 FilesOpenFileSystemResponseParams.init(
113 types_mojom.Error this.error
114 ) : super(kVersions.last.size);
115
107 static FilesOpenFileSystemResponseParams deserialize(bindings.Message message) { 116 static FilesOpenFileSystemResponseParams deserialize(bindings.Message message) {
108 var decoder = new bindings.Decoder(message); 117 var decoder = new bindings.Decoder(message);
109 var result = decode(decoder); 118 var result = decode(decoder);
110 if (decoder.excessHandles != null) { 119 if (decoder.excessHandles != null) {
111 decoder.excessHandles.forEach((h) => h.close()); 120 decoder.excessHandles.forEach((h) => h.close());
112 } 121 }
113 return result; 122 return result;
114 } 123 }
115 124
116 static FilesOpenFileSystemResponseParams decode(bindings.Decoder decoder0) { 125 static FilesOpenFileSystemResponseParams decode(bindings.Decoder decoder0) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 Map toJson() { 176 Map toJson() {
168 Map map = new Map(); 177 Map map = new Map();
169 map["error"] = error; 178 map["error"] = error;
170 return map; 179 return map;
171 } 180 }
172 } 181 }
173 182
174 const int _filesMethodOpenFileSystemName = 0; 183 const int _filesMethodOpenFileSystemName = 0;
175 184
176 class _FilesServiceDescription implements service_describer.ServiceDescription { 185 class _FilesServiceDescription implements service_describer.ServiceDescription {
177 dynamic getTopLevelInterface([Function responseFactory]) => 186 void getTopLevelInterface(Function responder) {
178 responseFactory(null); 187 responder(null);
188 }
179 189
180 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => 190 void getTypeDefinition(String typeKey, Function responder) {
181 responseFactory(null); 191 responder(null);
192 }
182 193
183 dynamic getAllTypeDefinitions([Function responseFactory]) => 194 void getAllTypeDefinitions(Function responder) {
184 responseFactory(null); 195 responder(null);
196 }
185 } 197 }
186 198
187 abstract class Files { 199 abstract class Files {
188 static const String serviceName = "mojo::files::Files"; 200 static const String serviceName = "mojo::files::Files";
189 201
190 static service_describer.ServiceDescription _cachedServiceDescription; 202 static service_describer.ServiceDescription _cachedServiceDescription;
191 static service_describer.ServiceDescription get serviceDescription { 203 static service_describer.ServiceDescription get serviceDescription {
192 if (_cachedServiceDescription == null) { 204 if (_cachedServiceDescription == null) {
193 _cachedServiceDescription = new _FilesServiceDescription(); 205 _cachedServiceDescription = new _FilesServiceDescription();
194 } 206 }
195 return _cachedServiceDescription; 207 return _cachedServiceDescription;
196 } 208 }
197 209
198 static FilesProxy connectToService( 210 static FilesProxy connectToService(
199 bindings.ServiceConnector s, String url, [String serviceName]) { 211 bindings.ServiceConnector s, String url, [String serviceName]) {
200 FilesProxy p = new FilesProxy.unbound(); 212 FilesProxy p = new FilesProxy.unbound();
201 String name = serviceName ?? Files.serviceName; 213 String name = serviceName ?? Files.serviceName;
202 if ((name == null) || name.isEmpty) { 214 if ((name == null) || name.isEmpty) {
203 throw new core.MojoApiError( 215 throw new core.MojoApiError(
204 "If an interface has no ServiceName, then one must be provided."); 216 "If an interface has no ServiceName, then one must be provided.");
205 } 217 }
206 s.connectToService(url, p, name); 218 s.connectToService(url, p, name);
207 return p; 219 return p;
208 } 220 }
209 dynamic openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReq uest directory,[Function responseFactory = null]); 221 void openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReques t directory,void callback(types_mojom.Error error));
210 } 222 }
211 223
212 abstract class FilesInterface 224 abstract class FilesInterface
213 implements bindings.MojoInterface<Files>, 225 implements bindings.MojoInterface<Files>,
214 Files { 226 Files {
215 factory FilesInterface([Files impl]) => 227 factory FilesInterface([Files impl]) =>
216 new FilesStub.unbound(impl); 228 new FilesStub.unbound(impl);
217 229
218 factory FilesInterface.fromEndpoint( 230 factory FilesInterface.fromEndpoint(
219 core.MojoMessagePipeEndpoint endpoint, 231 core.MojoMessagePipeEndpoint endpoint,
(...skipping 29 matching lines...) Expand all
249 261
250 void handleResponse(bindings.ServiceMessage message) { 262 void handleResponse(bindings.ServiceMessage message) {
251 switch (message.header.type) { 263 switch (message.header.type) {
252 case _filesMethodOpenFileSystemName: 264 case _filesMethodOpenFileSystemName:
253 var r = FilesOpenFileSystemResponseParams.deserialize( 265 var r = FilesOpenFileSystemResponseParams.deserialize(
254 message.payload); 266 message.payload);
255 if (!message.header.hasRequestId) { 267 if (!message.header.hasRequestId) {
256 proxyError("Expected a message with a valid request Id."); 268 proxyError("Expected a message with a valid request Id.");
257 return; 269 return;
258 } 270 }
259 Completer c = completerMap[message.header.requestId]; 271 Function callback = callbackMap[message.header.requestId];
260 if (c == null) { 272 if (callback == null) {
261 proxyError( 273 proxyError(
262 "Message had unknown request Id: ${message.header.requestId}"); 274 "Message had unknown request Id: ${message.header.requestId}");
263 return; 275 return;
264 } 276 }
265 completerMap.remove(message.header.requestId); 277 callbackMap.remove(message.header.requestId);
266 if (c.isCompleted) { 278 callback(r.error );
267 proxyError("Response completer already completed");
268 return;
269 }
270 c.complete(r);
271 break; 279 break;
272 default: 280 default:
273 proxyError("Unexpected message type: ${message.header.type}"); 281 proxyError("Unexpected message type: ${message.header.type}");
274 close(immediate: true); 282 close(immediate: true);
275 break; 283 break;
276 } 284 }
277 } 285 }
278 286
279 @override 287 @override
280 String toString() { 288 String toString() {
(...skipping 24 matching lines...) Expand all
305 return newMockedProxy; 313 return newMockedProxy;
306 } 314 }
307 315
308 static FilesProxy newFromEndpoint( 316 static FilesProxy newFromEndpoint(
309 core.MojoMessagePipeEndpoint endpoint) { 317 core.MojoMessagePipeEndpoint endpoint) {
310 assert(endpoint.setDescription("For FilesProxy")); 318 assert(endpoint.setDescription("For FilesProxy"));
311 return new FilesProxy.fromEndpoint(endpoint); 319 return new FilesProxy.fromEndpoint(endpoint);
312 } 320 }
313 321
314 322
315 dynamic openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReq uest directory,[Function responseFactory = null]) { 323 void openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReques t directory,void callback(types_mojom.Error error)) {
316 if (impl != null) { 324 if (impl != null) {
317 return new Future(() => impl.openFileSystem(fileSystem,directory,_FilesStu bControl._filesOpenFileSystemResponseParamsFactory)); 325 impl.openFileSystem(fileSystem,directory,callback);
326 return;
318 } 327 }
319 var params = new _FilesOpenFileSystemParams(); 328 var params = new _FilesOpenFileSystemParams();
320 params.fileSystem = fileSystem; 329 params.fileSystem = fileSystem;
321 params.directory = directory; 330 params.directory = directory;
322 return ctrl.sendMessageWithRequestId( 331 ctrl.sendMessageWithRequestId(
323 params, 332 params,
324 _filesMethodOpenFileSystemName, 333 _filesMethodOpenFileSystemName,
325 -1, 334 -1,
326 bindings.MessageHeader.kMessageExpectsResponse); 335 bindings.MessageHeader.kMessageExpectsResponse,
336 callback);
327 } 337 }
328 } 338 }
329 339
330 class _FilesStubControl 340 class _FilesStubControl
331 extends bindings.StubMessageHandler 341 extends bindings.StubMessageHandler
332 implements bindings.StubControl<Files> { 342 implements bindings.StubControl<Files> {
333 Files _impl; 343 Files _impl;
334 344
335 _FilesStubControl.fromEndpoint( 345 _FilesStubControl.fromEndpoint(
336 core.MojoMessagePipeEndpoint endpoint, [Files impl]) 346 core.MojoMessagePipeEndpoint endpoint, [Files impl])
337 : super.fromEndpoint(endpoint, autoBegin: impl != null) { 347 : super.fromEndpoint(endpoint, autoBegin: impl != null) {
338 _impl = impl; 348 _impl = impl;
339 } 349 }
340 350
341 _FilesStubControl.fromHandle( 351 _FilesStubControl.fromHandle(
342 core.MojoHandle handle, [Files impl]) 352 core.MojoHandle handle, [Files impl])
343 : super.fromHandle(handle, autoBegin: impl != null) { 353 : super.fromHandle(handle, autoBegin: impl != null) {
344 _impl = impl; 354 _impl = impl;
345 } 355 }
346 356
347 _FilesStubControl.unbound([this._impl]) : super.unbound(); 357 _FilesStubControl.unbound([this._impl]) : super.unbound();
348 358
349 String get serviceName => Files.serviceName; 359 String get serviceName => Files.serviceName;
350 360
351 361
352 static FilesOpenFileSystemResponseParams _filesOpenFileSystemResponseParamsFac tory(types_mojom.Error error) { 362 Function _filesOpenFileSystemResponseParamsResponder(
353 var result = new FilesOpenFileSystemResponseParams(); 363 int requestId) {
354 result.error = error; 364 return (types_mojom.Error error) {
355 return result; 365 var result = new FilesOpenFileSystemResponseParams();
366 result.error = error;
367 sendResponse(buildResponseWithId(
368 result,
369 _filesMethodOpenFileSystemName,
370 requestId,
371 bindings.MessageHeader.kMessageIsResponse));
372 };
356 } 373 }
357 374
358 dynamic handleMessage(bindings.ServiceMessage message) { 375 void handleMessage(bindings.ServiceMessage message) {
359 if (bindings.ControlMessageHandler.isControlMessage(message)) { 376 if (bindings.ControlMessageHandler.isControlMessage(message)) {
360 return bindings.ControlMessageHandler.handleMessage(this, 377 bindings.ControlMessageHandler.handleMessage(
361 0, 378 this, 0, message);
362 message); 379 return;
363 } 380 }
364 if (_impl == null) { 381 if (_impl == null) {
365 throw new core.MojoApiError("$this has no implementation set"); 382 throw new core.MojoApiError("$this has no implementation set");
366 } 383 }
367 switch (message.header.type) { 384 switch (message.header.type) {
368 case _filesMethodOpenFileSystemName: 385 case _filesMethodOpenFileSystemName:
369 var params = _FilesOpenFileSystemParams.deserialize( 386 var params = _FilesOpenFileSystemParams.deserialize(
370 message.payload); 387 message.payload);
371 var response = _impl.openFileSystem(params.fileSystem,params.directory,_ filesOpenFileSystemResponseParamsFactory); 388 _impl.openFileSystem(params.fileSystem, params.directory, _filesOpenFile SystemResponseParamsResponder(message.header.requestId));
372 if (response is Future) {
373 return response.then((response) {
374 if (response != null) {
375 return buildResponseWithId(
376 response,
377 _filesMethodOpenFileSystemName,
378 message.header.requestId,
379 bindings.MessageHeader.kMessageIsResponse);
380 }
381 });
382 } else if (response != null) {
383 return buildResponseWithId(
384 response,
385 _filesMethodOpenFileSystemName,
386 message.header.requestId,
387 bindings.MessageHeader.kMessageIsResponse);
388 }
389 break; 389 break;
390 default: 390 default:
391 throw new bindings.MojoCodecError("Unexpected message name"); 391 throw new bindings.MojoCodecError("Unexpected message name");
392 break; 392 break;
393 } 393 }
394 return null;
395 } 394 }
396 395
397 Files get impl => _impl; 396 Files get impl => _impl;
398 set impl(Files d) { 397 set impl(Files d) {
399 if (d == null) { 398 if (d == null) {
400 throw new core.MojoApiError("$this: Cannot set a null implementation"); 399 throw new core.MojoApiError("$this: Cannot set a null implementation");
401 } 400 }
402 if (isBound && (_impl == null)) { 401 if (isBound && (_impl == null)) {
403 beginHandlingEvents(); 402 beginHandlingEvents();
404 } 403 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 core.MojoHandle handle, [Files impl]) 437 core.MojoHandle handle, [Files impl])
439 : super(new _FilesStubControl.fromHandle(handle, impl)); 438 : super(new _FilesStubControl.fromHandle(handle, impl));
440 439
441 static FilesStub newFromEndpoint( 440 static FilesStub newFromEndpoint(
442 core.MojoMessagePipeEndpoint endpoint) { 441 core.MojoMessagePipeEndpoint endpoint) {
443 assert(endpoint.setDescription("For FilesStub")); 442 assert(endpoint.setDescription("For FilesStub"));
444 return new FilesStub.fromEndpoint(endpoint); 443 return new FilesStub.fromEndpoint(endpoint);
445 } 444 }
446 445
447 446
448 dynamic openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReq uest directory,[Function responseFactory = null]) { 447 void openFileSystem(String fileSystem,directory_mojom.DirectoryInterfaceReques t directory,void callback(types_mojom.Error error)) {
449 return impl.openFileSystem(fileSystem,directory,responseFactory); 448 return impl.openFileSystem(fileSystem,directory,callback);
450 } 449 }
451 } 450 }
452 451
453 452
454 453
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698