Convert the analysics domain to handlers Change-Id: I957a2a84ac7c8fdebc1fce80dccf4716964f5647 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/239761 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/domain_analytics.dart b/pkg/analysis_server/lib/src/domain_analytics.dart index cec9fa8..1460410 100644 --- a/pkg/analysis_server/lib/src/domain_analytics.dart +++ b/pkg/analysis_server/lib/src/domain_analytics.dart
@@ -4,10 +4,12 @@ import 'package:analysis_server/protocol/protocol.dart'; import 'package:analysis_server/protocol/protocol_constants.dart'; -import 'package:analysis_server/protocol/protocol_generated.dart'; import 'package:analysis_server/src/analysis_server.dart'; +import 'package:analysis_server/src/handler/legacy/analytics_enable.dart'; +import 'package:analysis_server/src/handler/legacy/analytics_is_enabled.dart'; +import 'package:analysis_server/src/handler/legacy/analytics_send_event.dart'; +import 'package:analysis_server/src/handler/legacy/analytics_send_timing.dart'; import 'package:analysis_server/src/utilities/progress.dart'; -import 'package:telemetry/telemetry.dart'; /// Instances of the class [AnalyticsDomainHandler] implement a [RequestHandler] /// that handles requests in the `analytics` domain. @@ -16,61 +18,24 @@ AnalyticsDomainHandler(this.server); - Analytics? get analytics => server.analytics; - - String get _clientId => server.options.clientId ?? 'client'; - - Response handleEnable(Request request) { - var params = AnalyticsEnableParams.fromRequest(request); - final analytics = this.analytics; - if (analytics != null) { - analytics.enabled = params.value; - } - return AnalyticsEnableResult().toResponse(request.id); - } - - Response handleIsEnabled(Request request) { - return AnalyticsIsEnabledResult(analytics?.enabled ?? false) - .toResponse(request.id); - } - @override Response? handleRequest( Request request, CancellationToken cancellationToken) { var requestName = request.method; if (requestName == ANALYTICS_REQUEST_IS_ENABLED) { - return handleIsEnabled(request); + AnalyticsIsEnabledHandler(server, request, cancellationToken).handle(); + return Response.DELAYED_RESPONSE; } else if (requestName == ANALYTICS_REQUEST_ENABLE) { - return handleEnable(request); + AnalyticsEnableHandler(server, request, cancellationToken).handle(); + return Response.DELAYED_RESPONSE; } else if (requestName == ANALYTICS_REQUEST_SEND_EVENT) { - return handleSendEvent(request); + AnalyticsSendEventHandler(server, request, cancellationToken).handle(); + return Response.DELAYED_RESPONSE; } else if (requestName == ANALYTICS_REQUEST_SEND_TIMING) { - return handleSendTiming(request); + AnalyticsSendTimingHandler(server, request, cancellationToken).handle(); + return Response.DELAYED_RESPONSE; } - return null; } - - Response handleSendEvent(Request request) { - final analytics = this.analytics; - if (analytics == null) { - return AnalyticsSendEventResult().toResponse(request.id); - } - - var params = AnalyticsSendEventParams.fromRequest(request); - analytics.sendEvent(_clientId, params.action); - return AnalyticsSendEventResult().toResponse(request.id); - } - - Response handleSendTiming(Request request) { - final analytics = this.analytics; - if (analytics == null) { - return AnalyticsSendTimingResult().toResponse(request.id); - } - - var params = AnalyticsSendTimingParams.fromRequest(request); - analytics.sendTiming(params.event, params.millis, category: _clientId); - return AnalyticsSendTimingResult().toResponse(request.id); - } }
diff --git a/pkg/analysis_server/lib/src/handler/legacy/analytics_enable.dart b/pkg/analysis_server/lib/src/handler/legacy/analytics_enable.dart new file mode 100644 index 0000000..5b5a927 --- /dev/null +++ b/pkg/analysis_server/lib/src/handler/legacy/analytics_enable.dart
@@ -0,0 +1,30 @@ +// Copyright (c) 2022, 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. + +import 'dart:async'; + +import 'package:analysis_server/protocol/protocol.dart'; +import 'package:analysis_server/protocol/protocol_generated.dart'; +import 'package:analysis_server/src/analysis_server.dart'; +import 'package:analysis_server/src/handler/legacy/legacy_handler.dart'; +import 'package:analysis_server/src/utilities/progress.dart'; + +/// The handler for the `analytics.enable` request. +class AnalyticsEnableHandler extends LegacyHandler { + /// Initialize a newly created handler to be able to service requests for the + /// [server]. + AnalyticsEnableHandler(AnalysisServer server, Request request, + CancellationToken cancellationToken) + : super(server, request, cancellationToken); + + @override + Future<void> handle() async { + var params = AnalyticsEnableParams.fromRequest(request); + final analytics = server.analytics; + if (analytics != null) { + analytics.enabled = params.value; + } + sendResult(AnalyticsEnableResult()); + } +}
diff --git a/pkg/analysis_server/lib/src/handler/legacy/analytics_is_enabled.dart b/pkg/analysis_server/lib/src/handler/legacy/analytics_is_enabled.dart new file mode 100644 index 0000000..a4d3bfb --- /dev/null +++ b/pkg/analysis_server/lib/src/handler/legacy/analytics_is_enabled.dart
@@ -0,0 +1,25 @@ +// Copyright (c) 2022, 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. + +import 'dart:async'; + +import 'package:analysis_server/protocol/protocol.dart'; +import 'package:analysis_server/protocol/protocol_generated.dart'; +import 'package:analysis_server/src/analysis_server.dart'; +import 'package:analysis_server/src/handler/legacy/legacy_handler.dart'; +import 'package:analysis_server/src/utilities/progress.dart'; + +/// The handler for the `analytics.isEnabled` request. +class AnalyticsIsEnabledHandler extends LegacyHandler { + /// Initialize a newly created handler to be able to service requests for the + /// [server]. + AnalyticsIsEnabledHandler(AnalysisServer server, Request request, + CancellationToken cancellationToken) + : super(server, request, cancellationToken); + + @override + Future<void> handle() async { + sendResult(AnalyticsIsEnabledResult(server.analytics?.enabled ?? false)); + } +}
diff --git a/pkg/analysis_server/lib/src/handler/legacy/analytics_send_event.dart b/pkg/analysis_server/lib/src/handler/legacy/analytics_send_event.dart new file mode 100644 index 0000000..ea1aee4 --- /dev/null +++ b/pkg/analysis_server/lib/src/handler/legacy/analytics_send_event.dart
@@ -0,0 +1,35 @@ +// Copyright (c) 2022, 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. + +import 'dart:async'; + +import 'package:analysis_server/protocol/protocol.dart'; +import 'package:analysis_server/protocol/protocol_generated.dart'; +import 'package:analysis_server/src/analysis_server.dart'; +import 'package:analysis_server/src/handler/legacy/legacy_handler.dart'; +import 'package:analysis_server/src/utilities/progress.dart'; + +/// The handler for the `analytics.sendEvent` request. +class AnalyticsSendEventHandler extends LegacyHandler { + /// Initialize a newly created handler to be able to service requests for the + /// [server]. + AnalyticsSendEventHandler(AnalysisServer server, Request request, + CancellationToken cancellationToken) + : super(server, request, cancellationToken); + + String get _clientId => server.options.clientId ?? 'client'; + + @override + Future<void> handle() async { + final analytics = server.analytics; + if (analytics == null) { + sendResult(AnalyticsSendEventResult()); + return; + } + + var params = AnalyticsSendEventParams.fromRequest(request); + analytics.sendEvent(_clientId, params.action); + sendResult(AnalyticsSendEventResult()); + } +}
diff --git a/pkg/analysis_server/lib/src/handler/legacy/analytics_send_timing.dart b/pkg/analysis_server/lib/src/handler/legacy/analytics_send_timing.dart new file mode 100644 index 0000000..bb9961e --- /dev/null +++ b/pkg/analysis_server/lib/src/handler/legacy/analytics_send_timing.dart
@@ -0,0 +1,35 @@ +// Copyright (c) 2022, 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. + +import 'dart:async'; + +import 'package:analysis_server/protocol/protocol.dart'; +import 'package:analysis_server/protocol/protocol_generated.dart'; +import 'package:analysis_server/src/analysis_server.dart'; +import 'package:analysis_server/src/handler/legacy/legacy_handler.dart'; +import 'package:analysis_server/src/utilities/progress.dart'; + +/// The handler for the `analytics.sendTiming` request. +class AnalyticsSendTimingHandler extends LegacyHandler { + /// Initialize a newly created handler to be able to service requests for the + /// [server]. + AnalyticsSendTimingHandler(AnalysisServer server, Request request, + CancellationToken cancellationToken) + : super(server, request, cancellationToken); + + String get _clientId => server.options.clientId ?? 'client'; + + @override + Future<void> handle() async { + final analytics = server.analytics; + if (analytics == null) { + sendResult(AnalyticsSendTimingResult()); + return; + } + + var params = AnalyticsSendTimingParams.fromRequest(request); + analytics.sendTiming(params.event, params.millis, category: _clientId); + sendResult(AnalyticsSendTimingResult()); + } +}