Пример #1
0
        public IObservable <bool> MoveNext()
        {
            return(call.ReadMessageAsync().ContinueWith(result =>
            {
                this.current = result;

                if (result == null)
                {
                    return call.StreamingResponseCallFinishedTask.Select(_ => false);
                }

                return Observable.Return(true);
            }));
        }
Пример #2
0
        public async Task <bool> MoveNext(CancellationToken token)
        {
            using (call.RegisterCancellationCallbackForToken(token))
            {
                var result = await call.ReadMessageAsync().ConfigureAwait(false);

                this.current = result;

                if (result == null)
                {
                    await call.StreamingResponseCallFinishedTask.ConfigureAwait(false);

                    return(false);
                }
                return(true);
            }
        }
        public async Task <bool> MoveNext(CancellationToken token)
        {
            if (token != CancellationToken.None)
            {
                throw new InvalidOperationException("Cancellation of individual reads is not supported.");
            }
            var result = await call.ReadMessageAsync().ConfigureAwait(false);

            this.current = result;

            if (result == null)
            {
                await call.StreamingCallFinishedTask.ConfigureAwait(false);

                return(false);
            }
            return(true);
        }
Пример #4
0
        public async Task <bool> MoveNext(CancellationToken token)
        {
            var cancellationTokenRegistration = token.CanBeCanceled ? token.Register(() => call.Cancel()) : (IDisposable)null;

            using (cancellationTokenRegistration)
            {
                var result = await call.ReadMessageAsync().ConfigureAwait(false);

                this.current = result;

                if (result == null)
                {
                    await call.StreamingResponseCallFinishedTask.ConfigureAwait(false);

                    return(false);
                }
                return(true);
            }
        }