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);
        }
Ejemplo n.º 2
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));
            });
        }
Ejemplo n.º 3
0
 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);
        }
Ejemplo n.º 5
0
        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();
        }