Beispiel #1
0
        private async Task <IRSession> StartSessionAsync(CancellationToken ct)
        {
            _session ??= _workflow.RSessions.GetOrCreate(@"REPL");

            if (!_session.IsHostRunning)
            {
                await _session.EnsureHostStartedAsync(new RHostStartupInfo(isInteractive : true), _sessionCallback, null, 3000, ct);

                await _session.SetVsGraphicsDeviceAsync();
            }

            return(_session);
        }
Beispiel #2
0
        /// <summary>
        /// Starts intellisense session.
        /// </summary>
        public async Task StartSessionAsync(CancellationToken ct = default(CancellationToken))
        {
            var token = await _lock.ResetAsync(ct);

            try {
                if (Session == null)
                {
                    Session = _sessionProvider.GetOrCreate(SessionNames.Intellisense);
                }

                if (!Session.IsHostRunning)
                {
                    int timeout  = _coreShell.IsUnitTestEnvironment ? 10000 : 3000;
                    var settings = _coreShell.GetService <IRToolsSettings>();
                    await Session.EnsureHostStartedAsync(new RHostStartupInfo(settings.CranMirror, codePage : settings.RCodePage), null, timeout);
                }
            } finally {
                token.Set();
            }
        }
        private async Task <ExecutionResult> InitializeAsync(bool isResetting, string workingDirectory)
        {
            try {
                if (!Session.IsHostRunning)
                {
                    var startupInfo = new RHostStartupInfo(_settings.CranMirror, workingDirectory, _settings.RCodePage, _terminalWidth, !isResetting, true, true, _settings.GridDynamicEvaluation);
                    await Session.EnsureHostStartedAsync(startupInfo, new RSessionCallback(CurrentWindow, Session, _settings, _services, _fs));
                }
                return(ExecutionResult.Success);
            } catch (ComponentBinaryMissingException cbmex) {
                await _services.ShowErrorMessageAsync(cbmex.Message);

                return(ExecutionResult.Failure);
            } catch (RHostDisconnectedException ex) {
                WriteRHostDisconnectedError(ex);
                return(ExecutionResult.Success);
            } catch (Exception ex) {
                await _services.ShowErrorMessageAsync(ex.Message);

                return(ExecutionResult.Failure);
            }
        }
        public override async Task HandleRequestAsync(HttpListenerContext context, CancellationToken ct)
        {
            if (!_session.IsHostRunning)
            {
                await _session.EnsureHostStartedAsync(new RHostStartupInfo(), null, 3000, ct);
            }

            var ub = new UriBuilder()
            {
                Scheme = "file",
                Host   = "",
                Path   = context.Request.Url.AbsolutePath
            };

            var uri = ub.Uri.LocalPath;

            if (await _session.FileExistsAsync(uri, ct))
            {
                await CopyFileAsync(uri, context, ct);

                return;
            }
        }
Beispiel #5
0
        private async Task <ExecutionResult> InitializeAsync(bool isResetting)
        {
            try {
                if (!Session.IsHostRunning)
                {
                    var startupInfo = new RHostStartupInfo {
                        Name = "REPL",
                        RHostCommandLineArguments = _connections.ActiveConnection?.RCommandLineArguments,
                        CranMirrorName            = _settings.CranMirror,
                        CodePage         = _settings.RCodePage,
                        WorkingDirectory = _settings.WorkingDirectory,
                        TerminalWidth    = _terminalWidth,
                        EnableAutosave   = !isResetting
                    };

                    if (CurrentWindow != null)
                    {
                        CurrentWindow.TextView.VisualElement.SizeChanged += VisualElement_SizeChanged;
                        CurrentWindow.OutputBuffer.Changed += OutputBuffer_Changed;
                    }

                    await Session.EnsureHostStartedAsync(startupInfo, new RSessionCallback(CurrentWindow, Session, _settings, _coreShell, new FileSystem()));
                }
                return(ExecutionResult.Success);
            } catch (RHostBrokerBinaryMissingException) {
                await _coreShell.ShowErrorMessageAsync(Resources.Error_Microsoft_R_Host_Missing);

                return(ExecutionResult.Failure);
            } catch (RHostDisconnectedException ex) {
                CurrentWindow?.WriteError(Environment.NewLine + ex.Message);
                return(ExecutionResult.Success);
            } catch (Exception ex) {
                await _coreShell.ShowErrorMessageAsync(ex.Message);

                return(ExecutionResult.Failure);
            }
        }
        /// <summary>
        /// Starts intellisense session.
        /// </summary>
        public async Task StartSessionAsync(CancellationToken ct = default)
        {
            var token = await _lock.ResetAsync(ct);

            try {
                if (!_sessionProvider.HasBroker)
                {
                    throw new RHostDisconnectedException();
                }

                if (Session == null)
                {
                    Session = _sessionProvider.GetOrCreate(SessionNames.Intellisense);
                }

                if (!Session.IsHostRunning)
                {
                    var timeout = _unitTests ? 10000 : 3000;
                    await Session.EnsureHostStartedAsync(new RHostStartupInfo(), null, null, timeout, ct);
                }
            } finally {
                token.Set();
            }
        }
Beispiel #7
0
        /// <summary>
        /// Starts intellisense session.
        /// </summary>
        public async Task StartSessionAsync()
        {
            var token = await _lock.ResetAsync();

            try {
                if (!_sessionProvider.HasBroker)
                {
                    throw new RHostDisconnectedException();
                }

                if (Session == null)
                {
                    Session = _sessionProvider.GetOrCreate(SessionNames.Intellisense);
                }

                if (!Session.IsHostRunning)
                {
                    int timeout = _coreShell.IsUnitTestEnvironment ? 10000 : 3000;
                    await Session.EnsureHostStartedAsync(new RHostStartupInfo(RToolsSettings.Current.CranMirror, codePage : RToolsSettings.Current.RCodePage), null, timeout);
                }
            } finally {
                token.Set();
            }
        }