private static async Task RunHost(RHost host, TaskCompletionSourceEx <object> hostStartedTcs, CancellationToken initializationCt) { try { await host.Run(initializationCt); } catch (OperationCanceledException oce) { hostStartedTcs.TrySetCanceled(oce); } catch (MessageTransportException mte) { hostStartedTcs.TrySetCanceled(new RHostDisconnectedException(string.Empty, mte)); } catch (Exception ex) { hostStartedTcs.TrySetException(ex); } finally { // RHost.Run shouldn't be completed before `IRCallback.Connected` is called hostStartedTcs.TrySetCanceled(new RHostDisconnectedException(Resources.Error_UnknownError)); } }
private async Task CreateAndRunHost(RHostStartupInfo startupInfo, int timeout) { try { _host = await BrokerConnector.ConnectAsync(startupInfo.Name, this, startupInfo.RHostCommandLineArguments, timeout); await _host.Run(); } catch (OperationCanceledException oce) { _initializationTcs.TrySetCanceled(oce); } catch (MessageTransportException mte) { _initializationTcs.TrySetCanceled(new RHostDisconnectedException(string.Empty, mte)); } catch (Exception ex) { _initializationTcs.TrySetException(ex); } finally { Interlocked.Exchange(ref _initializationTcs, null); } }
public RSessionRequestSource(bool isVisible, CancellationToken ct) { _createRequestTcs = new TaskCompletionSourceEx<IRSessionInteraction>(); _responseTcs = new TaskCompletionSourceEx<object>(); _cancellationTokenRegistration = ct.Register(() => _createRequestTcs.TrySetCanceled(cancellationToken:ct)); IsVisible = isVisible; }
public RSessionEvaluation(IReadOnlyList <IRContext> contexts, IRExpressionEvaluator evaluator, CancellationToken hostCancellationToken) { Contexts = contexts; _evaluator = evaluator; _tcs = new TaskCompletionSourceEx <object>(); _hostCancellationRegistration = hostCancellationToken.Register(() => _tcs.TrySetCanceled(new RHostDisconnectedException())); }
public RSessionRequestSource(bool isVisible, CancellationToken ct) { _createRequestTcs = new TaskCompletionSourceEx <IRSessionInteraction>(); _responseTcs = new TaskCompletionSourceEx <object>(); ct.Register(() => _createRequestTcs.TrySetCanceled(cancellationToken: ct)); IsVisible = isVisible; }
public Task <REvaluationResult> EvaluateAsync(string expression, REvaluationKind kind, CancellationToken ct) { if (kind.HasFlag(REvaluationKind.Mutating)) { IsMutating = true; } ct.Register(() => _tcs.TrySetCanceled()); return(_evaluator.EvaluateAsync(expression, kind, ct)); }
public void TrySetCanceled() { var tcs = new TaskCompletionSourceEx<int>(); var count = 0; ParallelTools.Invoke(8, i => { var isSet = tcs.TrySetCanceled(); if (isSet) { Interlocked.Increment(ref count); } }); count.Should().Be(1); }
public void TrySetCanceled() { var tcs = new TaskCompletionSourceEx <int>(); var count = 0; ParallelTools.Invoke(8, i => { var isSet = tcs.TrySetCanceled(); if (isSet) { Interlocked.Increment(ref count); } }); count.Should().Be(1); }
private void SetCanceled(object state) => _tcs.TrySetCanceled((OperationCanceledException)state);
public void TryCancel(OperationCanceledException exception) { _createRequestTcs.TrySetCanceled(exception); _responseTcs.TrySetCanceled(exception); }
public bool TryCancel(OperationCanceledException exception) { return(_tcs.TrySetCanceled(exception)); }
public RSessionEvaluationSource(CancellationToken clientCancellationToken) { _tcs = new TaskCompletionSourceEx <IRSessionEvaluation>(); clientCancellationToken.Register(() => _tcs.TrySetCanceled(cancellationToken: clientCancellationToken), false); }
public void TryCancel(OperationCanceledException exception) { _createRequestTcs.TrySetCanceled(exception); _responseTcs.TrySetCanceled(exception); _cancellationTokenRegistration.Dispose(); }