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

Side by Side Diff: pkg/analysis_server/lib/src/domain_completion.dart

Issue 691853006: display completion performance in new server status page (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 | Annotate | Revision Log
OLDNEW
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 library domain.completion; 5 library domain.completion;
6 6
7 import 'package:analysis_server/src/analysis_server.dart'; 7 import 'package:analysis_server/src/analysis_server.dart';
8 import 'package:analysis_server/src/constants.dart'; 8 import 'package:analysis_server/src/constants.dart';
9 import 'package:analysis_server/src/protocol.dart'; 9 import 'package:analysis_server/src/protocol.dart';
10 import 'package:analysis_server/src/services/completion/completion_manager.dart' ; 10 import 'package:analysis_server/src/services/completion/completion_manager.dart' ;
11 11
12 /** 12 /**
13 * Instances of the class [CompletionDomainHandler] implement a [RequestHandler] 13 * Instances of the class [CompletionDomainHandler] implement a [RequestHandler]
14 * that handles requests in the search domain. 14 * that handles requests in the search domain.
15 */ 15 */
16 class CompletionDomainHandler implements RequestHandler { 16 class CompletionDomainHandler implements RequestHandler {
17 /** 17 /**
18 * The analysis server that is using this handler to process requests. 18 * The analysis server that is using this handler to process requests.
19 */ 19 */
20 final AnalysisServer server; 20 final AnalysisServer server;
21 21
22 /** 22 /**
23 * The next completion response id. 23 * The next completion response id.
24 */ 24 */
25 int _nextCompletionId = 0; 25 int _nextCompletionId = 0;
26 26
27 /** 27 /**
28 * Code completion peformance for the last completion operation.
29 */
30 CompletionPerformance performance;
31
32 /**
28 * Initialize a new request handler for the given [server]. 33 * Initialize a new request handler for the given [server].
29 */ 34 */
30 CompletionDomainHandler(this.server); 35 CompletionDomainHandler(this.server);
31 36
32 @override 37 @override
33 Response handleRequest(Request request) { 38 Response handleRequest(Request request) {
34 try { 39 try {
35 String requestName = request.method; 40 String requestName = request.method;
36 if (requestName == COMPLETION_GET_SUGGESTIONS) { 41 if (requestName == COMPLETION_GET_SUGGESTIONS) {
37 return processRequest(request); 42 return processRequest(request);
38 } 43 }
39 } on RequestFailure catch (exception) { 44 } on RequestFailure catch (exception) {
40 return exception.response; 45 return exception.response;
41 } 46 }
42 return null; 47 return null;
43 } 48 }
44 49
45 /** 50 /**
46 * Process a `completion.getSuggestions` request. 51 * Process a `completion.getSuggestions` request.
47 */ 52 */
48 Response processRequest(Request request) { 53 Response processRequest(Request request) {
54 performance = new CompletionPerformance();
49 // extract params 55 // extract params
50 var params = new CompletionGetSuggestionsParams.fromRequest(request); 56 CompletionGetSuggestionsParams params =
57 new CompletionGetSuggestionsParams.fromRequest(request);
51 // schedule completion analysis 58 // schedule completion analysis
52 String completionId = (_nextCompletionId++).toString(); 59 String completionId = (_nextCompletionId++).toString();
53 CompletionManager.create( 60 CompletionManager.create(
54 server.getAnalysisContext(params.file), 61 server.getAnalysisContext(params.file),
55 server.getSource(params.file), 62 server.getSource(params.file),
56 params.offset, 63 params.offset,
57 server.searchEngine).results().listen((CompletionResult result) { 64 server.searchEngine,
65 performance).results().listen((CompletionResult result) {
58 sendCompletionNotification( 66 sendCompletionNotification(
59 completionId, 67 completionId,
60 result.replacementOffset, 68 result.replacementOffset,
61 result.replacementLength, 69 result.replacementLength,
62 result.suggestions, 70 result.suggestions,
63 result.last); 71 result.last);
72 if (result.last) {
73 performance.complete();
74 }
64 }); 75 });
65 // initial response without results 76 // initial response without results
66 return new CompletionGetSuggestionsResult(completionId).toResponse( 77 return new CompletionGetSuggestionsResult(
67 request.id); 78 completionId).toResponse(request.id);
68 } 79 }
69 80
70 /** 81 /**
71 * Send completion notification results. 82 * Send completion notification results.
72 */ 83 */
73 void sendCompletionNotification(String completionId, int replacementOffset, 84 void sendCompletionNotification(String completionId, int replacementOffset,
74 int replacementLength, Iterable<CompletionSuggestion> results, bool isLast ) { 85 int replacementLength, Iterable<CompletionSuggestion> results, bool isLast ) {
75 server.sendNotification(new CompletionResultsParams(completionId, 86 server.sendNotification(
76 replacementOffset, replacementLength, results, isLast).toNotification()) ; 87 new CompletionResultsParams(
88 completionId,
89 replacementOffset,
90 replacementLength,
91 results,
92 isLast).toNotification());
77 } 93 }
78 } 94 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698