コード例 #1
0
 public async Task <bool> TryRead(
     StreamId streamId,
     IHydrateEvents events,
     CancellationToken token = new CancellationToken())
 {
     return(false);
 }
コード例 #2
0
        public async Task <bool> TryRead(StreamId streamId, IHydrateEvents events, CancellationToken token)
        {
            var table = await _table.GetOrCreate();

            var hydratedAny = false;
            var query       = table.CreateQuery <EventRecordTableEntity>()
                              .Where(x => x.PartitionKey == streamId.Value)
                              .Where(x => string.Compare(x.RowKey, "E^", StringComparison.Ordinal) > 0)
                              .Where(x => string.Compare(x.RowKey, "F^", StringComparison.Ordinal) < 0)
                              .AsTableQuery();
            TableContinuationToken queryToken = null;

            do
            {
                var segment = await table.ExecuteQuerySegmentedAsync(query, queryToken, token);

                queryToken = segment.ContinuationToken;
                var eventsFromStore = segment
                                      .Select(x =>
                {
                    hydratedAny         = true;
                    var serializedEvent = new SerializedEvent(x.Type, x.Payload);
                    return(_events.Deserialize(serializedEvent));
                });
                events.Hydrate(eventsFromStore);
                if (token.IsCancellationRequested)
                {
                    throw new OperationCanceledException(token);
                }
            } while (queryToken != null);
            return(hydratedAny);
        }
コード例 #3
0
 public async Task Read(
     StreamId streamId,
     IHydrateEvents events,
     CancellationToken token = new CancellationToken())
 {
     throw new StreamNotFoundException();
 }
コード例 #4
0
 public async Task Read(
     StreamId streamId,
     IHydrateEvents events,
     CancellationToken token = new CancellationToken())
 {
     events.Hydrate(new List <object> {
         new FakeHydratedEvent()
     });
 }
コード例 #5
0
        public async Task Read(StreamId streamId, IHydrateEvents events, CancellationToken token)
        {
            var result = await TryRead(streamId, events, token);

            if (result)
            {
                return;
            }
            string message = $"Stream {streamId.Value} not found.";

            throw new StreamNotFoundException(message);
        }