OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:isolate'; | 6 import 'dart:isolate'; |
7 | 7 |
8 import 'package:barback/barback.dart'; | 8 import 'package:barback/barback.dart'; |
9 // TODO(nweiz): don't import from "src" once issue 14966 is fixed. | 9 // TODO(nweiz): don't import from "src" once issue 14966 is fixed. |
10 import 'package:barback/src/internal_asset.dart'; | 10 import 'package:barback/src/internal_asset.dart'; |
11 | 11 |
12 import '../serialize.dart'; | 12 import '../serialize.dart'; |
13 import 'get_input_transform.dart'; | 13 import 'get_input_transform.dart'; |
14 | 14 |
15 /// Serialize the methods shared between [Transform] and [DeclaringTransform]. | 15 /// Serialize the methods shared between [Transform] and [DeclaringTransform]. |
16 /// | 16 /// |
17 /// [additionalFields] contains additional serialized fields to add to the | 17 /// [additionalFields] contains additional serialized fields to add to the |
18 /// serialized transform. [methodHandlers] is a set of additional methods. Each | 18 /// serialized transform. [methodHandlers] is a set of additional methods. Each |
19 /// value should take a JSON message and return the response (which may be a | 19 /// value should take a JSON message and return the response (which may be a |
20 /// Future). | 20 /// Future). |
21 Map _serializeBaseTransform(transform, Map additionalFields, | 21 Map _serializeBaseTransform(transform, Map<String, dynamic> additionalFields, |
22 Map<String, Function> methodHandlers) { | 22 Map<String, Function> methodHandlers) { |
23 var receivePort = new ReceivePort(); | 23 var receivePort = new ReceivePort(); |
24 receivePort.listen((wrappedMessage) { | 24 receivePort.listen((wrappedMessage) { |
25 respond(wrappedMessage, (message) { | 25 respond(wrappedMessage, (message) { |
26 var handler = methodHandlers[message['type']]; | 26 var handler = methodHandlers[message['type']]; |
27 if (handler != null) return handler(message); | 27 if (handler != null) return handler(message); |
28 | 28 |
29 if (message['type'] == 'consumePrimary') { | 29 if (message['type'] == 'consumePrimary') { |
30 transform.consumePrimary(); | 30 transform.consumePrimary(); |
31 return null; | 31 return null; |
32 } | 32 } |
33 | 33 |
34 assert(message['type'] == 'log'); | 34 assert(message['type'] == 'log'); |
35 var method = { | 35 var method = { |
36 'Info': transform.logger.info, | 36 'Info': transform.logger.info, |
37 'Fine': transform.logger.fine, | 37 'Fine': transform.logger.fine, |
38 'Warning': transform.logger.warning, | 38 'Warning': transform.logger.warning, |
39 'Error': transform.logger.error | 39 'Error': transform.logger.error |
40 }[message['level']]; | 40 }[message['level']]; |
41 assert(method != null); | 41 assert(method != null); |
42 | 42 |
43 var assetId = message['assetId'] == null ? null : | 43 var assetId = message['assetId'] == null ? null : |
44 deserializeId(message['assetId']); | 44 deserializeId(message['assetId']); |
45 var span = message['span'] == null ? null : | 45 var span = message['span'] == null ? null : |
46 deserializeSpan(message['span']); | 46 deserializeSpan(message['span']); |
47 method(message['message'], asset: assetId, span: span); | 47 method(message['message'], asset: assetId, span: span); |
48 }); | 48 }); |
49 }); | 49 }); |
50 | 50 |
51 return {'port': receivePort.sendPort}..addAll(additionalFields); | 51 return <String, dynamic>{'port': receivePort.sendPort} |
| 52 ..addAll(additionalFields); |
52 } | 53 } |
53 | 54 |
54 /// Converts [transform] into a serializable map. | 55 /// Converts [transform] into a serializable map. |
55 Map serializeTransform(Transform transform) { | 56 Map serializeTransform(Transform transform) { |
56 return _serializeBaseTransform(transform, { | 57 return _serializeBaseTransform(transform, { |
57 'primaryInput': serializeAsset(transform.primaryInput) | 58 'primaryInput': serializeAsset(transform.primaryInput) |
58 }, { | 59 }, { |
59 'getInput': (message) => transform.getInput(deserializeId(message['id'])) | 60 'getInput': (message) => transform.getInput(deserializeId(message['id'])) |
60 .then((asset) => serializeAsset(asset)), | 61 .then((asset) => serializeAsset(asset)), |
61 'addOutput': (message) => | 62 'addOutput': (message) => |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 : primaryId = deserializeId(transform['primaryId']), | 139 : primaryId = deserializeId(transform['primaryId']), |
139 super(transform); | 140 super(transform); |
140 | 141 |
141 void declareOutput(AssetId id) { | 142 void declareOutput(AssetId id) { |
142 call(_port, { | 143 call(_port, { |
143 'type': 'declareOutput', | 144 'type': 'declareOutput', |
144 'output': serializeId(id) | 145 'output': serializeId(id) |
145 }); | 146 }); |
146 } | 147 } |
147 } | 148 } |
OLD | NEW |