| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 part of dart.developer; | 5 part of dart.developer; |
| 6 | 6 |
| 7 class ServiceExtensionResponse { | 7 class ServiceExtensionResponse { |
| 8 final String _result; | 8 final String _result; |
| 9 final int _errorCode; | 9 final int _errorCode; |
| 10 final String _errorDetail; | 10 final String _errorDetail; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 } | 74 } |
| 75 }); | 75 }); |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 } | 78 } |
| 79 | 79 |
| 80 /// A service protocol extension handler. Registered with [registerExtension]. | 80 /// A service protocol extension handler. Registered with [registerExtension]. |
| 81 /// | 81 /// |
| 82 /// Must complete to a [ServiceExtensionResponse]. | 82 /// Must complete to a [ServiceExtensionResponse]. |
| 83 /// | 83 /// |
| 84 /// [method] - the method name. | 84 /// [method] - the method name of the service protocol request. |
| 85 /// [parameters] - the parameters. | 85 /// [parameters] - A map holding the parameters to the service protocol request. |
| 86 /// |
| 87 /// *NOTE*: All parameter names and values are **encoded as strings**. |
| 86 typedef Future<ServiceExtensionResponse> | 88 typedef Future<ServiceExtensionResponse> |
| 87 ServiceExtensionHandler(String method, Map parameters); | 89 ServiceExtensionHandler(String method, Map<String, String> parameters); |
| 88 | 90 |
| 89 /// Register a [ServiceExtensionHandler] that will be invoked in this isolate | 91 /// Register a [ServiceExtensionHandler] that will be invoked in this isolate |
| 90 /// for [method]. | 92 /// for [method]. *NOTE*: Service protocol extensions must be registered |
| 93 /// in each isolate and users of extensions must always specify a target |
| 94 /// isolate. |
| 91 void registerExtension(String method, ServiceExtensionHandler handler) { | 95 void registerExtension(String method, ServiceExtensionHandler handler) { |
| 92 if (method is! String) { | 96 if (method is! String) { |
| 93 throw new ArgumentError.value(method, | 97 throw new ArgumentError.value(method, |
| 94 'method', | 98 'method', |
| 95 'Must be a String'); | 99 'Must be a String'); |
| 96 } | 100 } |
| 97 if (_lookupExtension(method) != null) { | 101 if (_lookupExtension(method) != null) { |
| 98 throw new ArgumentError('Extension already registered: $method'); | 102 throw new ArgumentError('Extension already registered: $method'); |
| 99 } | 103 } |
| 100 if (handler is! ServiceExtensionHandler) { | 104 if (handler is! ServiceExtensionHandler) { |
| 101 throw new ArgumentError.value(handler, | 105 throw new ArgumentError.value(handler, |
| 102 'handler', | 106 'handler', |
| 103 'Must be a ServiceExtensionHandler'); | 107 'Must be a ServiceExtensionHandler'); |
| 104 } | 108 } |
| 105 _registerExtension(method, handler); | 109 _registerExtension(method, handler); |
| 106 } | 110 } |
| 107 | 111 |
| 108 // Both of these functions are written inside C++ to avoid updating the data | 112 // Both of these functions are written inside C++ to avoid updating the data |
| 109 // structures in Dart, getting an OOB, and observing stale state. Do not move | 113 // structures in Dart, getting an OOB, and observing stale state. Do not move |
| 110 // these into Dart code unless you can ensure that the operations will can be | 114 // these into Dart code unless you can ensure that the operations will can be |
| 111 // done atomically. Native code lives in vm/isolate.cc- | 115 // done atomically. Native code lives in vm/isolate.cc- |
| 112 // LookupServiceExtensionHandler and RegisterServiceExtensionHandler. | 116 // LookupServiceExtensionHandler and RegisterServiceExtensionHandler. |
| 113 external ServiceExtensionHandler _lookupExtension(String method); | 117 external ServiceExtensionHandler _lookupExtension(String method); |
| 114 external _registerExtension(String method, ServiceExtensionHandler handler); | 118 external _registerExtension(String method, ServiceExtensionHandler handler); |
| OLD | NEW |