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

Side by Side Diff: pkg/analysis_server/lib/src/channel/byte_stream_channel.dart

Issue 1398293002: Move the wire protocol support into the public API (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add missed files Created 5 years, 2 months 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
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 channel.byte_stream; 5 library channel.byte_stream;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:io'; 9 import 'dart:io';
10 10
11 import 'package:analysis_server/plugin/protocol/protocol.dart';
11 import 'package:analysis_server/src/analysis_server.dart'; 12 import 'package:analysis_server/src/analysis_server.dart';
12 import 'package:analysis_server/src/channel/channel.dart'; 13 import 'package:analysis_server/src/channel/channel.dart';
13 import 'package:analysis_server/src/protocol.dart';
14 import 'package:analyzer/instrumentation/instrumentation.dart'; 14 import 'package:analyzer/instrumentation/instrumentation.dart';
15 15
16 /** 16 /**
17 * Instances of the class [ByteStreamClientChannel] implement a 17 * Instances of the class [ByteStreamClientChannel] implement a
18 * [ClientCommunicationChannel] that uses a stream and a sink (typically, 18 * [ClientCommunicationChannel] that uses a stream and a sink (typically,
19 * standard input and standard output) to communicate with servers. 19 * standard input and standard output) to communicate with servers.
20 */ 20 */
21 class ByteStreamClientChannel implements ClientCommunicationChannel { 21 class ByteStreamClientChannel implements ClientCommunicationChannel {
22 final Stream input; 22 final Stream input;
23 final IOSink output; 23 final IOSink output;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 if (!_closeRequested) { 98 if (!_closeRequested) {
99 _closeRequested = true; 99 _closeRequested = true;
100 assert(!_closed.isCompleted); 100 assert(!_closed.isCompleted);
101 _closed.complete(); 101 _closed.complete();
102 } 102 }
103 } 103 }
104 104
105 @override 105 @override
106 void listen(void onRequest(Request request), 106 void listen(void onRequest(Request request),
107 {Function onError, void onDone()}) { 107 {Function onError, void onDone()}) {
108 _input 108 _input.transform(const Utf8Decoder()).transform(new LineSplitter()).listen(
109 .transform(const Utf8Decoder()) 109 (String data) => _readRequest(data, onRequest),
110 .transform(new LineSplitter()) 110 onError: onError, onDone: () {
111 .listen((String data) => _readRequest(data, onRequest),
112 onError: onError, onDone: () {
113 close(); 111 close();
114 onDone(); 112 onDone();
115 }); 113 });
116 } 114 }
117 115
118 @override 116 @override
119 void sendNotification(Notification notification) { 117 void sendNotification(Notification notification) {
120 // Don't send any further notifications after the communication channel is 118 // Don't send any further notifications after the communication channel is
121 // closed. 119 // closed.
122 if (_closeRequested) { 120 if (_closeRequested) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // structure as a request. 163 // structure as a request.
166 Request request = new Request.fromString(data); 164 Request request = new Request.fromString(data);
167 if (request == null) { 165 if (request == null) {
168 sendResponse(new Response.invalidRequestFormat()); 166 sendResponse(new Response.invalidRequestFormat());
169 return; 167 return;
170 } 168 }
171 onRequest(request); 169 onRequest(request);
172 }); 170 });
173 } 171 }
174 } 172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698