public void Increment() { var countdownDisposable = new CountdownDisposable(() => { }); countdownDisposable.Count.Should().Be(0); var disposable1 = countdownDisposable.Increment(); countdownDisposable.Count.Should().Be(1); var disposable2 = countdownDisposable.Increment(); countdownDisposable.Count.Should().Be(2); disposable2.Dispose(); countdownDisposable.Count.Should().Be(1); disposable2.Dispose(); countdownDisposable.Count.Should().Be(1); disposable2 = countdownDisposable.Increment(); countdownDisposable.Count.Should().Be(2); disposable1.Dispose(); countdownDisposable.Count.Should().Be(1); disposable2.Dispose(); countdownDisposable.Count.Should().Be(0); }
public RSession(int id, IRHostClientApp hostClientApp, Action onDispose) { Id = id; _hostClientApp = hostClientApp; _onDispose = onDispose; _disposeToken = DisposeToken.Create<RSession>(); _disableMutatingOnReadConsole = new CountdownDisposable(() => { if (!_delayedMutatedOnReadConsole) { return; } _delayedMutatedOnReadConsole = false; Task.Run(() => Mutated?.Invoke(this, EventArgs.Empty)); }); }
public RInteractiveEvaluator(IRSessionProvider sessionProvider, IRSession session, IRHistory history, IConnectionManager connections, ICoreShell coreShell, IRSettings settings, IConsole console) { History = history; Session = session; Session.Output += SessionOnOutput; Session.Disconnected += SessionOnDisconnected; Session.BeforeRequest += SessionOnBeforeRequest; Session.AfterRequest += SessionOnAfterRequest; _sessionProvider = sessionProvider; _connections = connections; _coreShell = coreShell; _settings = settings; _console = console; _evaluatorRequest = new CountdownDisposable(); }
public void Create() { var callCount = 0; Action callback = () => callCount++; var countdownDisposable = new CountdownDisposable(callback); countdownDisposable.Count.Should().Be(0); callCount.Should().Be(0); var disposable = countdownDisposable.Increment(); countdownDisposable.Count.Should().Be(1); callCount.Should().Be(0); disposable.Dispose(); countdownDisposable.Count.Should().Be(0); callCount.Should().Be(1); }
public RHistory(IRInteractiveWorkflow interactiveWorkflow, ITextBuffer textBuffer, IFileSystem fileSystem, IRSettings settings, IEditorOperationsFactoryService editorOperationsFactory, IRtfBuilderService rtfBuilderService, Action dispose) { _interactiveWorkflow = interactiveWorkflow; _historyTextBuffer = textBuffer; _fileSystem = fileSystem; _editorOperationsFactory = editorOperationsFactory; _rtfBuilderService = rtfBuilderService; _dispose = dispose; _textBufferIsEditable = new CountdownDisposable(MakeTextBufferReadOnly); _isMultiline = settings.MultilineHistorySelection; if (_isMultiline) { _entries = new MultilineRHistoryEntries(); } else { _entries = new SinglelineRHistoryEntries(); } MakeTextBufferReadOnly(); }