public IEnumerable <JournalRecord> GetRecords(long fromRecord = 0) { var endStreamCut = GetEndStreamCut(); _lastEventReadHandler.Invoke(endStreamCut); var request = new ReadEventsRequest { Scope = _scope, Stream = _stream, ToStreamCut = endStreamCut }; var recordNumber = 0; using var call = _client.ReadEvents(request, cancellationToken: _cancellationToken); var responseStream = call.ResponseStream; while (responseStream.MoveNext(_cancellationToken).GetAwaiter().GetResult()) { if (recordNumber <= fromRecord) { continue; } var @event = responseStream.Current; var bytes = @event.Event.ToByteArray(); var savedRecord = (JournalRecord)_serializer.Deserialize(bytes); var record = new JournalRecord(recordNumber++, savedRecord.Written, savedRecord.Command); yield return(record); } }
private static async Task ReadAllEvents() { var request = new ReadEventsRequest(); request.Scope = ScopeName; request.Stream = StreamName; // read to the current end of the stream // without this parameter the reader will block and // wait for future events when the end is reached request.ToStreamCut = await GetTailStreamCut(); using var call = _client.ReadEvents(request); while (await call.ResponseStream.MoveNext()) { var response = call.ResponseStream.Current; Console.WriteLine("---- Event received ------"); Console.WriteLine(" Payload size: " + response.Event.Length); Console.WriteLine(" Position.Description: " + response.Position.Description); Console.WriteLine(" EventPointer.Description: " + response.EventPointer.Description); Console.WriteLine(" StreamCut.Description: " + response.StreamCut.Description); EventPointers.Add(response.EventPointer); } }
public IJournalSubscription Subscribe(long @from, Action <JournalRecord> handler) { var request = new ReadEventsRequest(); request.Scope = Config.Current.GetSettings <EngineSettings>().StreamName; request.Stream = "mystream"; var response = _client.ReadEvents(request); var streamReader = response.ResponseStream; var sub = new PravegaJournalSubscription(handler, streamReader); sub.Start(); return(sub); }