Пример #1
0
        protected virtual async Task <IDebugAdapterClient> InitializeClient(Action <DebugAdapterClientOptions>?clientOptionsAction = null)
        {
            _client = DebugAdapterClient.Create(
                options => {
                var(reader, writer) = SetupServer();
                options
                .WithInput(reader)
                .WithOutput(writer)
                .WithLoggerFactory(TestOptions.ClientLoggerFactory)
                .ConfigureLogging(
                    x => {
                    x.SetMinimumLevel(LogLevel.Trace);
                }
                    )
                .WithInputScheduler(options.InputScheduler)
                .WithOutputScheduler(options.OutputScheduler)
                .WithDefaultScheduler(options.DefaultScheduler)
                .Services
                .AddTransient(typeof(IPipelineBehavior <,>), typeof(SettlePipeline <,>))
                .AddSingleton(Events as IRequestSettler);
                clientOptionsAction?.Invoke(options);
            }
                );

            Disposable.Add(_client);

            await _client.Initialize(CancellationToken).ConfigureAwait(false);

            return(_client);
        }
        protected virtual async Task <(IDebugAdapterClient client, IDebugAdapterServer server)> Initialize(
            Action <DebugAdapterClientOptions> clientOptionsAction,
            Action <DebugAdapterServerOptions> serverOptionsAction
            )
        {
            var clientPipe = new Pipe(TestOptions.DefaultPipeOptions);
            var serverPipe = new Pipe(TestOptions.DefaultPipeOptions);

            _client = DebugAdapterClient.Create(
                options => {
                options
                .WithLoggerFactory(TestOptions.ClientLoggerFactory)
                .ConfigureLogging(
                    x => {
                    x.SetMinimumLevel(LogLevel.Trace);
                    x.Services.AddSingleton(TestOptions.ClientLoggerFactory);
                }
                    )
                .Services
                .AddTransient(typeof(IPipelineBehavior <,>), typeof(SettlePipeline <,>))
                .AddSingleton(ClientEvents as IRequestSettler);
                ConfigureClientInputOutput(serverPipe.Reader, clientPipe.Writer, options);
                clientOptionsAction(options);
            }
                );

            _server = DebugAdapterServer.Create(
                options => {
                options
                .WithLoggerFactory(TestOptions.ServerLoggerFactory)
                .ConfigureLogging(
                    x => {
                    x.SetMinimumLevel(LogLevel.Trace);
                    x.Services.AddSingleton(TestOptions.ServerLoggerFactory);
                }
                    )
                .Services
                .AddTransient(typeof(IPipelineBehavior <,>), typeof(SettlePipeline <,>))
                .AddSingleton(ServerEvents as IRequestSettler);
                ConfigureServerInputOutput(clientPipe.Reader, serverPipe.Writer, options);
                serverOptionsAction(options);
            }
                );

            Disposable.Add(_client);
            Disposable.Add(_server);

            return(await Observable.FromAsync(_client.Initialize).ForkJoin(
                       Observable.FromAsync(_server.Initialize),
                       (a, b) => (_client, _server)
                       ).ToTask(CancellationToken));
        }
 public static Task <RestartFrameResponse> RequestRestartFrame(this IDebugAdapterClient mediator, RestartFrameArguments @params, CancellationToken cancellationToken = default)
 {
     return(mediator.SendRequest(@params, cancellationToken));
 }
 public static Task <VariablesResponse> RequestVariables(this IDebugAdapterClient mediator, VariablesArguments @params, CancellationToken cancellationToken = default)
 {
     return(mediator.SendRequest(@params, cancellationToken));
 }
Пример #5
0
 public static Task <DataBreakpointInfoResponse> RequestDataBreakpointInfo(this IDebugAdapterClient mediator, DataBreakpointInfoArguments @params, CancellationToken cancellationToken = default)
 {
     return(mediator.SendRequest(@params, cancellationToken));
 }
Пример #6
0
 public static Task <RunInTerminalResponse> RunInTerminal(this IDebugAdapterClient mediator, RunInTerminalArguments @params)
 {
     return(mediator.SendRequest <RunInTerminalArguments, RunInTerminalResponse>(RequestNames.RunInTerminal, @params));
 }
Пример #7
0
 public static Task <RunInTerminalResponse> RunInTerminal(this IDebugAdapterClient mediator, RunInTerminalArguments @params, CancellationToken cancellationToken = default)
 {
     return(mediator.SendRequest(@params, cancellationToken));
 }