| // Copyright 2014 The Flutter Authors. 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:dds/dap.dart' hide DapServer; | |
| import '../base/file_system.dart'; | |
| import '../base/platform.dart'; | |
| import 'flutter_adapter.dart'; | |
| import 'flutter_adapter_args.dart'; | |
| import 'flutter_test_adapter.dart'; | |
| /// A DAP server that communicates over a [ByteStreamServerChannel], usually constructed from the processes stdin/stdout streams. | |
| /// | |
| /// The server is intended to be single-use. It should live only for the | |
| /// duration of a single debug session in the editor, and terminate when the | |
| /// user stops debugging. If a user starts multiple debug sessions | |
| /// simultaneously it is expected that the editor will start multiple debug | |
| /// adapters. | |
| class DapServer { | |
| DapServer( | |
| Stream<List<int>> input, | |
| StreamSink<List<int>> output, { | |
| required FileSystem fileSystem, | |
| required Platform platform, | |
| this.ipv6 = false, | |
| this.enableDds = true, | |
| this.enableAuthCodes = true, | |
| bool test = false, | |
| this.logger, | |
| void Function(Object? e)? onError, | |
| }) : channel = ByteStreamServerChannel(input, output, logger) { | |
| adapter = test | |
| ? FlutterTestDebugAdapter( | |
| channel, | |
| fileSystem: fileSystem, | |
| platform: platform, | |
| ipv6: ipv6, | |
| enableFlutterDds: enableDds, | |
| enableAuthCodes: enableAuthCodes, | |
| logger: logger, | |
| onError: onError, | |
| ) | |
| : FlutterDebugAdapter( | |
| channel, | |
| fileSystem: fileSystem, | |
| platform: platform, | |
| enableFlutterDds: enableDds, | |
| enableAuthCodes: enableAuthCodes, | |
| logger: logger, | |
| onError: onError, | |
| ); | |
| } | |
| final ByteStreamServerChannel channel; | |
| late final DartDebugAdapter<FlutterLaunchRequestArguments, FlutterAttachRequestArguments> adapter; | |
| final bool ipv6; | |
| final bool enableDds; | |
| final bool enableAuthCodes; | |
| final Logger? logger; | |
| void stop() { | |
| channel.close(); | |
| } | |
| } |