本文整理汇总了C#中IEventStoreConnection.ReadStreamEventsForwardAsync方法的典型用法代码示例。如果您正苦于以下问题:C# IEventStoreConnection.ReadStreamEventsForwardAsync方法的具体用法?C# IEventStoreConnection.ReadStreamEventsForwardAsync怎么用?C# IEventStoreConnection.ReadStreamEventsForwardAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEventStoreConnection
的用法示例。
在下文中一共展示了IEventStoreConnection.ReadStreamEventsForwardAsync方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Count
public static int Count(IEventStoreConnection store, string stream)
{
var result = 0;
while (true)
{
var slice = store.ReadStreamEventsForwardAsync(stream, result, SliceSize, false).Result;
result += slice.Events.Length;
if (slice.IsEndOfStream)
break;
}
return result;
}
示例2: LoadEvents
internal static BatterAggregate LoadEvents(IEventStoreConnection conn, String streamId)
{
var player = new BatterAggregate();
var slice = conn.ReadStreamEventsForwardAsync(streamId,
StreamPosition.Start,
200,
false).Result;
var events = slice.Events.Select(e => JsonConvert.DeserializeObject(Encoding.UTF8.GetString(e.Event.Data), typeof(PlayerWasAtBat)) as EventBase);
player.LoadFromHistory(events);
return player;
}
示例3: ReadEventsTillAsync
/// <summary>
/// Read events until the given event number async.
/// </summary>
/// <param name="connection">The connection.</param>
/// <param name="resolveLinkTos">Whether to resolve Link events.</param>
/// <param name="userCredentials">User credentials for the operation.</param>
/// <param name="lastCommitPosition">The commit position to read until.</param>
/// <param name="lastEventNumber">The event number to read until.</param>
/// <returns></returns>
protected override Task ReadEventsTillAsync(IEventStoreConnection connection, bool resolveLinkTos, UserCredentials userCredentials,
long? lastCommitPosition, int? lastEventNumber)
{
return connection.ReadStreamEventsForwardAsync(StreamId, _nextReadEventNumber, ReadBatchSize, resolveLinkTos,userCredentials)
.ContinueWith(_ =>
{
if (_.IsFaulted || _.IsCanceled)
{
_.Wait(); //force exception to be thrown
}
if (!ProcessEvents(lastEventNumber, _.Result) && !ShouldStop)
{
ReadEventsTillAsync(connection, resolveLinkTos, userCredentials,
lastCommitPosition, lastEventNumber);
}
else if (Verbose)
{
Log.Debug("Catch-up Subscription to {0}: finished reading events, nextReadEventNumber = {1}.",
IsSubscribedToAll ? "<all>" : StreamId, _nextReadEventNumber);
}
}, TaskContinuationOptions.AttachedToParent);
}
示例4: ReadEventsInternal
private void ReadEventsInternal(IEventStoreConnection connection, bool resolveLinkTos,
UserCredentials userCredentials, long? lastCommitPosition, int? lastEventNumber)
{
try {
connection.ReadStreamEventsForwardAsync(StreamId, _nextReadEventNumber, ReadBatchSize, resolveLinkTos, userCredentials)
.ContinueWith(_ =>
{
ReadEventsCallback(_, connection, resolveLinkTos, userCredentials, lastCommitPosition, lastEventNumber);
});
}
catch(Exception ex)
{
_completion.SetException(ex);
}
}
示例5: ReadStreamEventsForward
private static void ReadStreamEventsForward(IEventStoreConnection connection)
{
StreamEventsSlice slice = connection.ReadStreamEventsForwardAsync("test-stream", StreamPosition.Start, 10, false).Result;
if (slice.Events.Length > 0)
{
Console.WriteLine("id: " + slice.Events[0].Event.EventId);
string data = Encoding.UTF8.GetString(slice.Events[0].Event.Data);
Console.WriteLine("data: " + data);
string metadata = Encoding.UTF8.GetString(slice.Events[0].Event.Metadata);
Console.WriteLine("metadata: " + metadata);
}
}
示例6: ReadEventsTill
/// <summary>
/// Read events until the given event number.
/// </summary>
/// <param name="connection">The connection.</param>
/// <param name="resolveLinkTos">Whether to resolve Link events.</param>
/// <param name="userCredentials">User credentials for the operation.</param>
/// <param name="lastCommitPosition">The commit position to read until.</param>
/// <param name="lastEventNumber">The event number to read until.</param>
protected override void ReadEventsTill(IEventStoreConnection connection, bool resolveLinkTos,
UserCredentials userCredentials, long? lastCommitPosition, int? lastEventNumber)
{
bool done;
do
{
var slice = connection.ReadStreamEventsForwardAsync(StreamId, _nextReadEventNumber, ReadBatchSize, resolveLinkTos, userCredentials).Result;
switch (slice.Status)
{
case SliceReadStatus.Success:
{
foreach (var e in slice.Events)
{
TryProcess(e);
}
_nextReadEventNumber = slice.NextEventNumber;
done = lastEventNumber == null ? slice.IsEndOfStream : slice.NextEventNumber > lastEventNumber;
break;
}
case SliceReadStatus.StreamNotFound:
{
if (lastEventNumber.HasValue && lastEventNumber != -1)
throw new Exception(string.Format("Impossible: stream {0} disappeared in the middle of catching up subscription.", StreamId));
done = true;
break;
}
case SliceReadStatus.StreamDeleted:
throw new StreamDeletedException(StreamId);
default:
throw new ArgumentOutOfRangeException(string.Format("Unexpected StreamEventsSlice.Status: {0}.", slice.Status));
}
if (!done && slice.IsEndOfStream)
Thread.Sleep(1); // we are waiting for server to flush its data
} while (!done && !ShouldStop);
if (Verbose)
Log.Debug("Catch-up Subscription to {0}: finished reading events, nextReadEventNumber = {1}.",
IsSubscribedToAll ? "<all>" : StreamId, _nextReadEventNumber);
}