b8c5ecd5aa
This reverts commit a527411e51.
Reason for revert: depends on package 'devtools_shared' that is not yet migrated.
Original change's description:
> [ package:dds ] Add null safety support
>
> Fixes https://github.com/dart-lang/sdk/issues/45756
>
> TEST=service + DDS tests
>
> Change-Id: I6dd14d7f9fdee479a830c3b053dc3b00aa635202
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/199800
> Commit-Queue: Ben Konyi <bkonyi@google.com>
> Reviewed-by: Devon Carew <devoncarew@google.com>
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Icdaef3ac55d7ef302acd3f9c2538a41e52e4253a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/200180
Reviewed-by: David Morgan <davidmorgan@google.com>
Commit-Queue: David Morgan <davidmorgan@google.com>
97 lines
2.3 KiB
Dart
97 lines
2.3 KiB
Dart
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
// @dart=2.9
|
|
|
|
import 'dart:async';
|
|
|
|
import 'package:json_rpc_2/src/server.dart' as json_rpc;
|
|
import 'package:sse/src/server/sse_handler.dart';
|
|
import 'package:stream_channel/stream_channel.dart';
|
|
|
|
import 'server_api.dart';
|
|
|
|
class LoggingMiddlewareSink<S> implements StreamSink<S> {
|
|
LoggingMiddlewareSink(this.sink);
|
|
|
|
@override
|
|
void add(S event) {
|
|
print('DevTools SSE response: $event');
|
|
sink.add(event);
|
|
}
|
|
|
|
@override
|
|
void addError(Object error, [StackTrace stackTrace]) {
|
|
print('DevTools SSE error response: $error');
|
|
sink.addError(error);
|
|
}
|
|
|
|
@override
|
|
Future addStream(Stream<S> stream) {
|
|
return sink.addStream(stream);
|
|
}
|
|
|
|
@override
|
|
Future close() => sink.close();
|
|
|
|
@override
|
|
Future get done => sink.done;
|
|
|
|
final StreamSink sink;
|
|
}
|
|
|
|
/// Represents a DevTools client connection to the DevTools server API.
|
|
class DevToolsClient {
|
|
DevToolsClient.fromSSEConnection(
|
|
SseConnection sse,
|
|
bool loggingEnabled,
|
|
) {
|
|
Stream<String> stream = sse.stream;
|
|
StreamSink sink = sse.sink;
|
|
|
|
if (loggingEnabled) {
|
|
stream = stream.map<String>((String e) {
|
|
print('DevTools SSE request: $e');
|
|
return e;
|
|
});
|
|
sink = LoggingMiddlewareSink(sink);
|
|
}
|
|
|
|
_server = json_rpc.Server(
|
|
StreamChannel(stream, sink),
|
|
strictProtocolChecks: false,
|
|
);
|
|
_registerJsonRpcMethods();
|
|
_server.listen();
|
|
}
|
|
|
|
void _registerJsonRpcMethods() {
|
|
_server.registerMethod('connected', (parameters) {
|
|
// Nothing to do here.
|
|
});
|
|
|
|
_server.registerMethod('currentPage', (parameters) {
|
|
// Nothing to do here.
|
|
});
|
|
|
|
_server.registerMethod('disconnected', (parameters) {
|
|
// Nothing to do here.
|
|
});
|
|
|
|
_server.registerMethod('getPreferenceValue', (parameters) {
|
|
final key = parameters['key'].asString;
|
|
final value = ServerApi.devToolsPreferences.properties[key];
|
|
return value;
|
|
});
|
|
|
|
_server.registerMethod('setPreferenceValue', (parameters) {
|
|
final key = parameters['key'].asString;
|
|
final value = parameters['value'].value;
|
|
ServerApi.devToolsPreferences.properties[key] = value;
|
|
});
|
|
}
|
|
|
|
json_rpc.Server _server;
|
|
}
|