68 lines
2.1 KiB
Dart
68 lines
2.1 KiB
Dart
// 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 '../debug_adapters/flutter_adapter.dart';
|
|
import '../debug_adapters/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();
|
|
}
|
|
}
|