blob: d3a4df680247a8d87c72720df0492a7b9d7a6b06 [file] [log] [blame]
// 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();
}
}