| 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 /** | 5 /** |
| 6 * Support for client code that needs to interact with the requests, responses | 6 * Support for client code that needs to interact with the requests, responses |
| 7 * and notifications that are part of the analysis server's wire protocol. | 7 * and notifications that are part of the analysis server's wire protocol. |
| 8 */ | 8 */ |
| 9 library analysis_server.plugin.protocol.protocol; | 9 library analysis_server.plugin.protocol.protocol; |
| 10 | 10 |
| 11 import 'dart:collection'; | 11 import 'dart:collection'; |
| 12 import 'dart:convert' hide JsonDecoder; | 12 import 'dart:convert' hide JsonDecoder; |
| 13 | 13 |
| 14 import 'package:analysis_server/protocol/protocol_generated.dart'; |
| 14 import 'package:analysis_server/src/protocol/protocol_internal.dart'; | 15 import 'package:analysis_server/src/protocol/protocol_internal.dart'; |
| 15 | 16 |
| 16 part 'generated_protocol.dart'; | |
| 17 | |
| 18 /** | 17 /** |
| 19 * A [RequestHandler] that supports [startup] and [shutdown] methods. | 18 * A [RequestHandler] that supports [startup] and [shutdown] methods. |
| 20 * | 19 * |
| 21 * Clients may not extend, implement or mix-in this class. | 20 * Clients may not extend, implement or mix-in this class. |
| 22 */ | 21 */ |
| 23 abstract class DomainHandler implements RequestHandler { | 22 abstract class DomainHandler implements RequestHandler { |
| 24 /** | 23 /** |
| 25 * Perform any operations associated with the shutdown of the domain. It is | 24 * Perform any operations associated with the shutdown of the domain. It is |
| 26 * not guaranteed that this method will be called. If it is, it will be | 25 * not guaranteed that this method will be called. If it is, it will be |
| 27 * called after the last [Request] has been made. | 26 * called after the last [Request] has been made. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 | 66 |
| 68 /** | 67 /** |
| 69 * The name of the event that triggered the notification. | 68 * The name of the event that triggered the notification. |
| 70 */ | 69 */ |
| 71 final String event; | 70 final String event; |
| 72 | 71 |
| 73 /** | 72 /** |
| 74 * A table mapping the names of notification parameters to their values, or | 73 * A table mapping the names of notification parameters to their values, or |
| 75 * `null` if there are no notification parameters. | 74 * `null` if there are no notification parameters. |
| 76 */ | 75 */ |
| 77 Map<String, Object> _params; | 76 final Map<String, Object> params; |
| 78 | 77 |
| 79 /** | 78 /** |
| 80 * Initialize a newly created [Notification] to have the given [event] name. | 79 * Initialize a newly created [Notification] to have the given [event] name. |
| 81 * If [_params] is provided, it will be used as the params; otherwise no | 80 * If [_params] is provided, it will be used as the params; otherwise no |
| 82 * params will be used. | 81 * params will be used. |
| 83 */ | 82 */ |
| 84 Notification(this.event, [this._params]); | 83 Notification(this.event, [this.params]); |
| 85 | 84 |
| 86 /** | 85 /** |
| 87 * Initialize a newly created instance based on the given JSON data. | 86 * Initialize a newly created instance based on the given JSON data. |
| 88 */ | 87 */ |
| 89 factory Notification.fromJson(Map json) { | 88 factory Notification.fromJson(Map json) { |
| 90 return new Notification(json[Notification.EVENT], | 89 return new Notification(json[Notification.EVENT], |
| 91 json[Notification.PARAMS] as Map<String, Object>); | 90 json[Notification.PARAMS] as Map<String, Object>); |
| 92 } | 91 } |
| 93 | 92 |
| 94 /** | 93 /** |
| 95 * Return a table representing the structure of the Json object that will be | 94 * Return a table representing the structure of the Json object that will be |
| 96 * sent to the client to represent this response. | 95 * sent to the client to represent this response. |
| 97 */ | 96 */ |
| 98 Map<String, Object> toJson() { | 97 Map<String, Object> toJson() { |
| 99 Map<String, Object> jsonObject = {}; | 98 Map<String, Object> jsonObject = {}; |
| 100 jsonObject[EVENT] = event; | 99 jsonObject[EVENT] = event; |
| 101 if (_params != null) { | 100 if (params != null) { |
| 102 jsonObject[PARAMS] = _params; | 101 jsonObject[PARAMS] = params; |
| 103 } | 102 } |
| 104 return jsonObject; | 103 return jsonObject; |
| 105 } | 104 } |
| 106 } | 105 } |
| 107 | 106 |
| 108 /** | 107 /** |
| 109 * A request that was received from the client. | 108 * A request that was received from the client. |
| 110 * | 109 * |
| 111 * Clients may not extend, implement or mix-in this class. | 110 * Clients may not extend, implement or mix-in this class. |
| 112 */ | 111 */ |
| (...skipping 25 matching lines...) Expand all Loading... |
| 138 final String id; | 137 final String id; |
| 139 | 138 |
| 140 /** | 139 /** |
| 141 * The method being requested. | 140 * The method being requested. |
| 142 */ | 141 */ |
| 143 final String method; | 142 final String method; |
| 144 | 143 |
| 145 /** | 144 /** |
| 146 * A table mapping the names of request parameters to their values. | 145 * A table mapping the names of request parameters to their values. |
| 147 */ | 146 */ |
| 148 final Map<String, Object> _params; | 147 final Map<String, Object> params; |
| 149 | 148 |
| 150 /** | 149 /** |
| 151 * The time (milliseconds since epoch) at which the client made the request | 150 * The time (milliseconds since epoch) at which the client made the request |
| 152 * or `null` if this information is not provided by the client. | 151 * or `null` if this information is not provided by the client. |
| 153 */ | 152 */ |
| 154 final int clientRequestTime; | 153 final int clientRequestTime; |
| 155 | 154 |
| 156 /** | 155 /** |
| 157 * Initialize a newly created [Request] to have the given [id] and [method] | 156 * Initialize a newly created [Request] to have the given [id] and [method] |
| 158 * name. If [params] is supplied, it is used as the "params" map for the | 157 * name. If [params] is supplied, it is used as the "params" map for the |
| 159 * request. Otherwise an empty "params" map is allocated. | 158 * request. Otherwise an empty "params" map is allocated. |
| 160 */ | 159 */ |
| 161 Request(this.id, this.method, | 160 Request(this.id, this.method, |
| 162 [Map<String, Object> params, this.clientRequestTime]) | 161 [Map<String, Object> params, this.clientRequestTime]) |
| 163 : _params = params ?? new HashMap<String, Object>(); | 162 : params = params ?? new HashMap<String, Object>(); |
| 164 | 163 |
| 165 /** | 164 /** |
| 166 * Return a request parsed from the given json, or `null` if the [data] is | 165 * Return a request parsed from the given json, or `null` if the [data] is |
| 167 * not a valid json representation of a request. The [data] is expected to | 166 * not a valid json representation of a request. The [data] is expected to |
| 168 * have the following format: | 167 * have the following format: |
| 169 * | 168 * |
| 170 * { | 169 * { |
| 171 * 'clientRequestTime': millisecondsSinceEpoch | 170 * 'clientRequestTime': millisecondsSinceEpoch |
| 172 * 'id': String, | 171 * 'id': String, |
| 173 * 'method': methodName, | 172 * 'method': methodName, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 } | 232 } |
| 234 | 233 |
| 235 /** | 234 /** |
| 236 * Return a table representing the structure of the Json object that will be | 235 * Return a table representing the structure of the Json object that will be |
| 237 * sent to the client to represent this response. | 236 * sent to the client to represent this response. |
| 238 */ | 237 */ |
| 239 Map<String, Object> toJson() { | 238 Map<String, Object> toJson() { |
| 240 Map<String, Object> jsonObject = new HashMap<String, Object>(); | 239 Map<String, Object> jsonObject = new HashMap<String, Object>(); |
| 241 jsonObject[ID] = id; | 240 jsonObject[ID] = id; |
| 242 jsonObject[METHOD] = method; | 241 jsonObject[METHOD] = method; |
| 243 if (_params.isNotEmpty) { | 242 if (params.isNotEmpty) { |
| 244 jsonObject[PARAMS] = _params; | 243 jsonObject[PARAMS] = params; |
| 245 } | 244 } |
| 246 if (clientRequestTime != null) { | 245 if (clientRequestTime != null) { |
| 247 jsonObject[CLIENT_REQUEST_TIME] = clientRequestTime; | 246 jsonObject[CLIENT_REQUEST_TIME] = clientRequestTime; |
| 248 } | 247 } |
| 249 return jsonObject; | 248 return jsonObject; |
| 250 } | 249 } |
| 251 } | 250 } |
| 252 | 251 |
| 253 /** | 252 /** |
| 254 * An exception that occurred during the handling of a request that requires | 253 * An exception that occurred during the handling of a request that requires |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 jsonObject[ID] = id; | 588 jsonObject[ID] = id; |
| 590 if (error != null) { | 589 if (error != null) { |
| 591 jsonObject[ERROR] = error.toJson(); | 590 jsonObject[ERROR] = error.toJson(); |
| 592 } | 591 } |
| 593 if (_result != null) { | 592 if (_result != null) { |
| 594 jsonObject[RESULT] = _result; | 593 jsonObject[RESULT] = _result; |
| 595 } | 594 } |
| 596 return jsonObject; | 595 return jsonObject; |
| 597 } | 596 } |
| 598 } | 597 } |
| OLD | NEW |