private void RegisterCapabilities(InitializeRequestArguments capabilities)
 {
     capabilities.SupportsRunInTerminalRequest = capabilities.SupportsRunInTerminalRequest || _collection.ContainsHandler(typeof(IRunInTerminalHandler));
     capabilities.SupportsProgressReporting    = capabilities.SupportsProgressReporting || _collection.ContainsHandler(typeof(IProgressStartHandler)) &&
                                                 _collection.ContainsHandler(typeof(IProgressUpdateHandler)) &&
                                                 _collection.ContainsHandler(typeof(IProgressEndHandler));
 }
        internal DebugAdapterClient(
            IOptions <DebugAdapterClientOptions> options,
            InitializeRequestArguments clientSettings,
            DebugAdapterSettingsBag settingsBag,
            DebugAdapterHandlerCollection collection,
            IEnumerable <OnDebugAdapterClientStartedDelegate> onClientStartedDelegates,
            DapReceiver receiver,
            IResponseRouter responseRouter,
            IServiceProvider serviceProvider,
            IDebugAdapterClientProgressManager debugAdapterClientProgressManager,
            Connection connection,
            IEnumerable <OnDebugAdapterClientInitializeDelegate> initializeDelegates,
            IEnumerable <IOnDebugAdapterClientInitialize> initializeHandlers,
            IEnumerable <OnDebugAdapterClientInitializedDelegate> initializedDelegates,
            IEnumerable <IOnDebugAdapterClientInitialized> initializedHandlers,
            IEnumerable <IOnDebugAdapterClientStarted> startedHandlers
            ) : base(collection, responseRouter)
        {
            _settingsBag          = settingsBag;
            ClientSettings        = clientSettings;
            _collection           = collection;
            _startedDelegates     = onClientStartedDelegates;
            _receiver             = receiver;
            _serviceProvider      = serviceProvider;
            ProgressManager       = debugAdapterClientProgressManager;
            _connection           = connection;
            _initializeDelegates  = initializeDelegates;
            _initializeHandlers   = initializeHandlers;
            _initializedDelegates = initializedDelegates;
            _initializedHandlers  = initializedHandlers;
            _startedHandlers      = startedHandlers;
            _concurrency          = options.Value.Concurrency;

            _disposable.Add(collection.Add(this));
        }
Beispiel #3
0
        public void PathFormat_Should_Be_Serializable()
        {
            var options = new InitializeRequestArguments()
            {
                PathFormat = PathFormat.Uri
            };

            Action a = () => new DapSerializer().SerializeObject(options);

            a.Should().NotThrow();
        }
        protected async Task HandleInitializeRequest(
            InitializeRequestArguments initializeParams,
            EditorSession editorSession,
            RequestContext <object, object> requestContext)
        {
            // Send the Initialized event first so that we get breakpoints
            await requestContext.SendEvent(
                InitializedEvent.Type,
                null);

            // Now send the Initialize response to continue setup
            await requestContext.SendResult(new object());
        }
        public async Task <InitializeResponse> Handle(InitializeRequestArguments request, CancellationToken cancellationToken)
        {
            // Clear any existing breakpoints before proceeding
            await _debugService.ClearAllBreakpointsAsync().ConfigureAwait(false);

            // Now send the Initialize response to continue setup
            return(new InitializeResponse
            {
                SupportsConfigurationDoneRequest = true,
                SupportsFunctionBreakpoints = true,
                SupportsConditionalBreakpoints = true,
                SupportsHitConditionalBreakpoints = true,
                SupportsSetVariable = true
            });
        }
Beispiel #6
0
        async Task <InitializeResponse> IRequestHandler <InitializeRequestArguments, InitializeResponse> .Handle(
            InitializeRequestArguments request,
            CancellationToken cancellationToken
            )
        {
            _settingsBag.ClientSettings = request;

            await DebugAdapterEventingHelper.Run(
                _initializeDelegates,
                (handler, ct) => handler(this, request, ct),
                _initializeHandlers.Union(_collection.Select(z => z.Handler).OfType <IOnDebugAdapterServerInitialize>()),
                (handler, ct) => handler.OnInitialize(this, request, ct),
                _concurrency,
                cancellationToken
                ).ConfigureAwait(false);

            var response = new InitializeResponse {
                AdditionalModuleColumns        = _capabilities.AdditionalModuleColumns,
                ExceptionBreakpointFilters     = _capabilities.ExceptionBreakpointFilters,
                SupportedChecksumAlgorithms    = _capabilities.SupportedChecksumAlgorithms,
                SupportsCompletionsRequest     = _capabilities.SupportsCompletionsRequest || _collection.ContainsHandler(typeof(ICompletionsHandler)),
                SupportsConditionalBreakpoints = _capabilities.SupportsConditionalBreakpoints,
                SupportsDataBreakpoints        = _capabilities.SupportsDataBreakpoints ||
                                                 _collection.ContainsHandler(typeof(IDataBreakpointInfoHandler)) || _collection.ContainsHandler(typeof(ISetDataBreakpointsHandler)),
                SupportsDisassembleRequest  = _capabilities.SupportsDisassembleRequest || _collection.ContainsHandler(typeof(IDisassembleHandler)),
                SupportsExceptionOptions    = _capabilities.SupportsExceptionOptions,
                SupportsFunctionBreakpoints = _capabilities.SupportsFunctionBreakpoints || _collection.ContainsHandler(typeof(ISetFunctionBreakpointsHandler)),
                SupportsLogPoints           = _capabilities.SupportsLogPoints,
                SupportsModulesRequest      = _capabilities.SupportsModulesRequest || _collection.ContainsHandler(typeof(IModuleHandler)),
                SupportsRestartFrame        = _capabilities.SupportsRestartFrame || _collection.ContainsHandler(typeof(IRestartFrameHandler)),
                SupportsRestartRequest      = _capabilities.SupportsRestartRequest || _collection.ContainsHandler(typeof(IRestartHandler)),
                SupportsSetExpression       = _capabilities.SupportsSetExpression || _collection.ContainsHandler(typeof(ISetExpressionHandler)),
                SupportsSetVariable         = _capabilities.SupportsSetVariable || _collection.ContainsHandler(typeof(ISetVariableHandler)),
                SupportsStepBack            = _capabilities.SupportsStepBack ||
                                              _collection.ContainsHandler(typeof(IStepBackHandler)) && _collection.ContainsHandler(typeof(IReverseContinueHandler)),
                SupportsTerminateRequest           = _capabilities.SupportsTerminateRequest || _collection.ContainsHandler(typeof(ITerminateHandler)),
                SupportTerminateDebuggee           = _capabilities.SupportTerminateDebuggee,
                SupportsConfigurationDoneRequest   = _capabilities.SupportsConfigurationDoneRequest || _collection.ContainsHandler(typeof(IConfigurationDoneHandler)),
                SupportsEvaluateForHovers          = _capabilities.SupportsEvaluateForHovers,
                SupportsExceptionInfoRequest       = _capabilities.SupportsExceptionInfoRequest || _collection.ContainsHandler(typeof(IExceptionInfoHandler)),
                SupportsGotoTargetsRequest         = _capabilities.SupportsGotoTargetsRequest || _collection.ContainsHandler(typeof(IGotoTargetsHandler)),
                SupportsHitConditionalBreakpoints  = _capabilities.SupportsHitConditionalBreakpoints,
                SupportsLoadedSourcesRequest       = _capabilities.SupportsLoadedSourcesRequest || _collection.ContainsHandler(typeof(ILoadedSourcesHandler)),
                SupportsReadMemoryRequest          = _capabilities.SupportsReadMemoryRequest || _collection.ContainsHandler(typeof(IReadMemoryHandler)),
                SupportsTerminateThreadsRequest    = _capabilities.SupportsTerminateThreadsRequest || _collection.ContainsHandler(typeof(ITerminateThreadsHandler)),
                SupportsValueFormattingOptions     = _capabilities.SupportsValueFormattingOptions,
                SupportsDelayedStackTraceLoading   = _capabilities.SupportsDelayedStackTraceLoading,
                SupportsStepInTargetsRequest       = _capabilities.SupportsStepInTargetsRequest || _collection.ContainsHandler(typeof(IStepInTargetsHandler)),
                SupportsCancelRequest              = _capabilities.SupportsCancelRequest || _collection.ContainsHandler(typeof(ICancelHandler)),
                SupportsClipboardContext           = _capabilities.SupportsClipboardContext,
                SupportsInstructionBreakpoints     = _capabilities.SupportsInstructionBreakpoints || _collection.ContainsHandler(typeof(ISetInstructionBreakpointsHandler)),
                SupportsSteppingGranularity        = _capabilities.SupportsSteppingGranularity,
                SupportsBreakpointLocationsRequest = _capabilities.SupportsBreakpointLocationsRequest || _collection.ContainsHandler(typeof(IBreakpointLocationsHandler))
            };

            _settingsBag.ServerSettings = response;

            await DebugAdapterEventingHelper.Run(
                _initializedDelegates,
                (handler, ct) => handler(this, request, response, ct),
                _initializedHandlers.Union(_collection.Select(z => z.Handler).OfType <IOnDebugAdapterServerInitialized>()),
                (handler, ct) => handler.OnInitialized(this, request, response, ct),
                _concurrency,
                cancellationToken
                ).ConfigureAwait(false);

            _receiver.Initialized();

            _initializeComplete.OnNext(response);
            _initializeComplete.OnCompleted();

            return(response);
        }