private void RequestEvents(bool delay) { if (_disposed) throw new InvalidOperationException("Disposed"); if (_eventsRequested) throw new InvalidOperationException("Read operation is already in progress"); if (_pauseRequested || _paused) throw new InvalidOperationException("Paused or pause requested"); _eventsRequested = true; var readEventsForward = new ClientMessage.ReadStreamEventsForward( _distibutionPointCorrelationId, new SendToThisEnvelope(this), _streamName, _fromSequenceNumber, _maxReadCount, _resolveLinkTos); if (delay) _publisher.Publish( TimerMessage.Schedule.Create( TimeSpan.FromMilliseconds(250), new PublishEnvelope(_publisher, crossThread: true), readEventsForward)); else _publisher.Publish(readEventsForward); }
public Task<StreamEventsSlice> ReadStreamEventsForwardAsync(string stream, int start, int count, bool resolveLinkTos, UserCredentials userCredentials = null) { Ensure.NotNullOrEmpty(stream, "stream"); Ensure.Nonnegative(start, "start"); Ensure.Positive(count, "count"); var source = new TaskCompletionSource<StreamEventsSlice>(); var envelope = new EmbeddedResponseEnvelope(new EmbeddedResponders.ReadStreamForwardEvents(source, stream, start)); Guid corrId = Guid.NewGuid(); var message = new ClientMessage.ReadStreamEventsForward(corrId, corrId, envelope, stream, start, count, resolveLinkTos, false, null, SystemAccount.Principal); _publisher.Publish(message); return source.Task; }
private void RequestEvents(string stream, bool delay) { if (_disposed) throw new InvalidOperationException("Disposed"); if (_pauseRequested || _paused) throw new InvalidOperationException("Paused or pause requested"); if (_eventsRequested.Contains(stream)) return; Queue<Tuple<EventRecord, EventRecord, float>> queue; if (_buffers.TryGetValue(stream, out queue) && queue.Count > 0) return; _eventsRequested.Add(stream); var readEventsForward = new ClientMessage.ReadStreamEventsForward( _distibutionPointCorrelationId, new SendToThisEnvelope(this), stream, _fromPositions.Streams[stream], _maxReadCount, _resolveLinkTos); if (delay) _publisher.Publish( TimerMessage.Schedule.Create( TimeSpan.FromMilliseconds(250), new PublishEnvelope(_publisher, crossThread: true), readEventsForward)); else _publisher.Publish(readEventsForward); }