server.dart 2.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
// 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';
13
import 'flutter_test_adapter.dart';
14 15 16 17 18 19 20 21 22 23

/// 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(
24 25
    Stream<List<int>> input,
    StreamSink<List<int>> output, {
26 27 28 29 30
    required FileSystem fileSystem,
    required Platform platform,
    this.ipv6 = false,
    this.enableDds = true,
    this.enableAuthCodes = true,
31
    bool test = false,
32
    this.logger,
33
    void Function(Object? e)? onError,
34
  }) : channel = ByteStreamServerChannel(input, output, logger) {
35
    adapter = test
36 37
        ? FlutterTestDebugAdapter(
            channel,
38 39 40 41 42
            fileSystem: fileSystem,
            platform: platform,
            ipv6: ipv6,
            enableDds: enableDds,
            enableAuthCodes: enableAuthCodes,
43 44 45 46 47
            logger: logger,
            onError: onError,
          )
        : FlutterDebugAdapter(
            channel,
48 49 50 51
            fileSystem: fileSystem,
            platform: platform,
            enableDds: enableDds,
            enableAuthCodes: enableAuthCodes,
52 53 54
            logger: logger,
            onError: onError,
          );
55 56 57 58 59 60 61 62 63 64 65 66 67
  }

  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();
  }
}