예제 #1
0
        public async Task On(BookingsEnabled e)
        {
            _all.Add(e.Id, new RoomsOnSale {
                Id = e.Id
            });
            var elapsed = await _networkSimulator.WaitFast().ConfigureAwait(false);

            this._reporter.Report($"Room {e.Id} available, took {elapsed}ms");
        }
예제 #2
0
        private async Task StartProducer(
            ISubscription subscription,
            IEnumerable <Chunk> chunks,
            CancellationToken cancellationToken)
        {
            long position = 0;

            try
            {
                foreach (var chunk in chunks)
                {
                    position = chunk.Position;
                    await _networkSimulator.WaitFast().ConfigureAwait(false);

                    cancellationToken.ThrowIfCancellationRequested();


                    if (!await subscription.OnNext(Clone(chunk)).ConfigureAwait(false))
                    {
                        await subscription.Completed(position).ConfigureAwait(false);

                        return;
                    }
                }
            }
            catch (Exception e)
            {
                await subscription.OnError(position, e).ConfigureAwait(false);

                return;
            }

            await subscription.Completed(position).ConfigureAwait(false);
        }
예제 #3
0
        private async Task PushToSubscriber(
            long start,
            ISubscription subscription,
            IEnumerable <Chunk> chunks,
            CancellationToken cancellationToken)
        {
            long index = 0;

            await subscription.OnStartAsync(start).ConfigureAwait(false);

            try
            {
                foreach (var chunk in chunks)
                {
                    index = chunk.Index;
                    await _networkSimulator.WaitFast().ConfigureAwait(false);

                    cancellationToken.ThrowIfCancellationRequested();

                    if (!await subscription.OnNextAsync(Clone(chunk)).ConfigureAwait(false))
                    {
                        await subscription.CompletedAsync(index).ConfigureAwait(false);

                        return;
                    }
                }
            }
            catch (Exception e)
            {
                await subscription.OnErrorAsync(index, e).ConfigureAwait(false);

                return;
            }

            await subscription.CompletedAsync(index).ConfigureAwait(false);
        }
        //public async Task On(BookingsEnabled e)
        //{
        //    var elapsed = await _networkSimulator.WaitFast().ConfigureAwait(false);
        //    this._reporter.Report($"Room available {e.Id} took {elapsed}ms");
        //}

        public async Task On(RoomBooked e)
        {
            var elapsed = await _networkSimulator.WaitFast().ConfigureAwait(false);

            this._reporter.Report($"Confirmed booking on {e.Id} took {elapsed}ms");
        }
        public async Task On(BookingsEnabled e)
        {
            var elapsed = await _networkSimulator.WaitFast().ConfigureAwait(false);

            this._reporter.Report($"Room available {e.Id} took {elapsed}ms");
        }