/// <summary> /// Lists breakpoints from the debugger API. Stale breakpoints are removed, /// new breakpoints are sent to the <see cref="IBreakpointServer"/> and /// breakpoints that cannot be processed are returned with an error. /// </summary> internal override void MainAction() { var serverBreakpoints = _client.ListBreakpoints(); if (serverBreakpoints == null) { return; } var bpmResponse = _breakpointManager.UpdateBreakpoints(serverBreakpoints); foreach (var breakpointToBeRemoved in bpmResponse.Removed) { var breakpoint = breakpointToBeRemoved.Convert(); breakpoint.Activated = false; _server.WriteBreakpointAsync(breakpoint).Wait(); } foreach (var breakpoint in bpmResponse.New) { if (breakpoint.Action == Debugger.V2.Breakpoint.Types.Action.Log) { breakpoint.Status = Common.CreateStatusMessage( Messages.LogPointNotSupported, isError: true); breakpoint.IsFinalState = true; _client.UpdateBreakpoint(breakpoint); } else { _server.WriteBreakpointAsync(breakpoint.Convert()).Wait(); } } }
/// <summary> /// Blocks and reads a breakpoint from the <see cref="IBreakpointServer"/> /// and then sends the sends the breakpoint to the debugger API. /// </summary> internal override void MainAction() { Breakpoint readBreakpoint = _server.ReadBreakpointAsync().Result; if (readBreakpoint.KillServer) { _cts.Cancel(); return; } StackdriverBreakpoint breakpoint = readBreakpoint.Convert(); breakpoint.IsFinalState = true; _client.UpdateBreakpoint(breakpoint); }
/// <summary> /// Blocks and reads a breakpoint from the <see cref="IBreakpointServer"/> /// and then sends the sends the breakpoint to the debugger API. /// </summary> internal override void MainAction() { Breakpoint readBreakpoint = _server.ReadBreakpointAsync().Result; if (readBreakpoint.KillServer) { _cts.Cancel(); return; } StackdriverBreakpoint breakpoint = readBreakpoint.Convert(); if (breakpoint.Action == StackdriverBreakpoint.Types.Action.Log) { _loggingClient.WriteLogEntry(breakpoint); } else { breakpoint.IsFinalState = true; } _debuggerClient.UpdateBreakpoint(breakpoint); }