| 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 |