示例#1
0
            public void HandleCompletedTask(Task completedTask)
            {
                if (completedTask == _timeoutTask)
                {
                    _cluster.ThrowTimeoutException(_selector, _description);
                }
                _timeoutCancellationTokenSource.Cancel();

                if (completedTask == _cancellationTaskCompletionSource.Task)
                {
                    _cancellationToken.ThrowIfCancellationRequested();
                }

                _descriptionChangedTask.GetAwaiter().GetResult(); // propagate exceptions
            }
示例#2
0
            public void WaitingForDescriptionToChange()
            {
                if (!_serverSelectionWaitQueueEntered)
                {
                    _cluster.EnterServerSelectionWaitQueue();
                    _serverSelectionWaitQueueEntered = true;
                }

                var timeoutRemaining = _timeoutAt - DateTime.UtcNow;

                if (timeoutRemaining <= TimeSpan.Zero)
                {
                    _cluster.ThrowTimeoutException(_selector, _description);
                }
            }