private void NotifyEventInStream(string streamId, StorageMessage.EventCommitted message) { HashSet <AwakeServiceMessage.SubscribeAwake> list; List <AwakeServiceMessage.SubscribeAwake> toRemove = null; if (_subscribers.TryGetValue(streamId, out list)) { foreach (var subscriber in list) { if (subscriber.From < new TFPos(message.CommitPosition, message.Event.LogPosition)) { _batchedReplies.Add(subscriber); _map.Remove(subscriber.CorrelationId); if (toRemove == null) { toRemove = new List <AwakeServiceMessage.SubscribeAwake>(); } toRemove.Add(subscriber); } } if (toRemove != null) { foreach (var item in toRemove) { list.Remove(item); } if (list.Count == 0) { _subscribers.Remove(streamId); } } } }
public void Handle(StorageMessage.EventCommitted message) { if (!_started) { return; } ProcessEventCommited(message.Event.EventStreamId, message.CommitPosition, message.Event); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); _eventRecord = new EventRecord( 10, new PrepareLogRecord( 500, Guid.NewGuid(), Guid.NewGuid(), 500, 0, "Stream", 99, DateTime.UtcNow, PrepareFlags.Data, "event", new byte[0], null)); _eventCommitted = new StorageMessage.EventCommitted(1000, _eventRecord, isTfEof: true); }
public void Handle(StorageMessage.EventCommitted message) { _lastSeenCommitPosition = message.CommitPosition; var resolvedEvent = ProcessEventCommited(AllStreamsSubscriptionId, message.CommitPosition, message.Event, null); ProcessEventCommited(message.Event.EventStreamId, message.CommitPosition, message.Event, resolvedEvent); ReissueReadsFor(AllStreamsSubscriptionId, message.CommitPosition, message.Event.EventNumber); ReissueReadsFor(message.Event.EventStreamId, message.CommitPosition, message.Event.EventNumber); }
public void Handle(StorageMessage.EventCommitted message) { _processedEvents++; _lastPosition = new TFPos(message.CommitPosition, message.Event.LogPosition); NotifyEventInStream("$all", message); NotifyEventInStream(message.Event.EventStreamId, message); if (message.TfEof) { EndReplyBatch(); BeginReplyBatch(); } CheckProcessedEventThreshold(); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); var recordFactory = LogFormatHelper <TLogFormat, TStreamId> .RecordFactory; var streamId = LogFormatHelper <TLogFormat, TStreamId> .StreamId; _eventRecord = new EventRecord( 10, LogRecord.Prepare( recordFactory, 500, Guid.NewGuid(), Guid.NewGuid(), 500, 0, streamId, 99, PrepareFlags.Data, "event", new byte[0], null, DateTime.UtcNow), "Stream"); _eventCommitted = new StorageMessage.EventCommitted(1000, _eventRecord, isTfEof: true); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); var recordFactory = LogFormatHelper <TLogFormat, TStreamId> .RecordFactory; var streamId = LogFormatHelper <TLogFormat, TStreamId> .StreamId; var eventTypeId = LogFormatHelper <TLogFormat, TStreamId> .EventTypeId; _eventRecord = new EventRecord( 100, LogRecord.Prepare( recordFactory, 1500, Guid.NewGuid(), Guid.NewGuid(), 1500, 0, streamId, 99, PrepareFlags.Data, eventTypeId, new byte[0], null, DateTime.UtcNow), "Stream", "EventType"); _eventCommitted = new StorageMessage.EventCommitted(2000, _eventRecord, isTfEof: true); _publisher = new InMemoryBus("bus"); _envelope = new PublishEnvelope(_publisher); _handler = new TestHandler <TestMessage>(); _publisher.Subscribe(_handler); _reply1 = new TestMessage(1); _reply2 = new TestMessage(2); _reply3 = new TestMessage(3); _reply4 = new TestMessage(4); _reply5 = new TestMessage(5); _correlationId1 = Guid.NewGuid(); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, _correlationId1, "Stream", new TFPos(1000, 500), _reply1)); _correlationId2 = Guid.NewGuid(); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, _correlationId2, "Stream", new TFPos(100000, 99500), _reply2)); _correlationId3 = Guid.NewGuid(); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, _correlationId3, "Stream2", new TFPos(1000, 500), _reply3)); _correlationId4 = Guid.NewGuid(); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, _correlationId4, null, new TFPos(1000, 500), _reply4)); _correlationId5 = Guid.NewGuid(); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, _correlationId5, null, new TFPos(100000, 99500), _reply5)); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); _eventRecord = new EventRecord( 100, new PrepareLogRecord( 1500, Guid.NewGuid(), Guid.NewGuid(), 1500, 0, "Stream", 99, DateTime.UtcNow, PrepareFlags.Data, "event", new byte[0], null)); _eventCommitted = new StorageMessage.EventCommitted(2000, _eventRecord, isTfEof: true); _publisher = new InMemoryBus("bus"); _envelope = new PublishEnvelope(_publisher); _handler = new TestHandler <TestMessage>(); _publisher.Subscribe(_handler); _reply1 = new TestMessage(1); _reply2 = new TestMessage(3); _reply3 = new TestMessage(4); _it.Handle(_eventCommitted); }
private void Given() { _it = new AwakeReaderService(); _eventRecord = new EventRecord( 100, new PrepareLogRecord( 1500, Guid.NewGuid(), Guid.NewGuid(), 1500, 0, "Stream", 99, DateTime.UtcNow, PrepareFlags.Data, "event", new byte[0], null)); _eventCommitted = new StorageMessage.EventCommitted(2000, _eventRecord, isTfEof: true); _publisher = new InMemoryBus("bus"); _envelope = new PublishEnvelope(_publisher); _handler = new TestHandler <TestMessage>(); _publisher.Subscribe(_handler); _reply1 = new TestMessage(1); _reply2 = new TestMessage(2); _reply3 = new TestMessage(3); _reply4 = new TestMessage(4); _reply5 = new TestMessage(5); _correlationId1 = Guid.NewGuid(); _it.Handle( new AwakeReaderServiceMessage.SubscribeAwake( _envelope, _correlationId1, "Stream", new TFPos(1000, 500), _reply1)); _correlationId2 = Guid.NewGuid(); _it.Handle( new AwakeReaderServiceMessage.SubscribeAwake( _envelope, _correlationId2, "Stream", new TFPos(100000, 99500), _reply2)); _correlationId3 = Guid.NewGuid(); _it.Handle( new AwakeReaderServiceMessage.SubscribeAwake( _envelope, _correlationId3, "Stream2", new TFPos(1000, 500), _reply3)); _correlationId4 = Guid.NewGuid(); _it.Handle( new AwakeReaderServiceMessage.SubscribeAwake( _envelope, _correlationId4, null, new TFPos(1000, 500), _reply4)); _correlationId5 = Guid.NewGuid(); _it.Handle( new AwakeReaderServiceMessage.SubscribeAwake( _envelope, _correlationId5, null, new TFPos(100000, 99500), _reply5)); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); var logFormat = LogFormatHelper <TLogFormat, TStreamId> .LogFormat; logFormat.StreamNameIndex.GetOrAddId("Stream", out var streamId, out _, out _); _eventRecord = new EventRecord( 100, LogRecord.Prepare( logFormat.RecordFactory, 1500, Guid.NewGuid(), Guid.NewGuid(), 1500, 0, streamId, 99, PrepareFlags.Data, "event", new byte[0], null, DateTime.UtcNow), "Stream"); _eventCommitted = new StorageMessage.EventCommitted(2000, _eventRecord, isTfEof: true); _publisher = new InMemoryBus("bus"); _envelope = new PublishEnvelope(_publisher); _handler = new TestHandler <TestMessage>(); _publisher.Subscribe(_handler); _reply1 = new TestMessage(1); _reply2 = new TestMessage(2); _reply3 = new TestMessage(3); _reply4 = new TestMessage(4); _reply5 = new TestMessage(5); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, Guid.NewGuid(), "Stream", new TFPos(1000, 500), _reply1)); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, Guid.NewGuid(), "Stream", new TFPos(100000, 99500), _reply2)); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, Guid.NewGuid(), "Stream2", new TFPos(1000, 500), _reply3)); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, Guid.NewGuid(), null, new TFPos(1000, 500), _reply4)); _it.Handle( new AwakeServiceMessage.SubscribeAwake( _envelope, Guid.NewGuid(), null, new TFPos(100000, 99500), _reply5)); }
private void Given() { _it = new Core.Services.AwakeReaderService.AwakeService(); var recordFactory = LogFormatHelper <TLogFormat, TStreamId> .RecordFactory; var streamId = LogFormatHelper <TLogFormat, TStreamId> .StreamId; _eventRecord = new EventRecord( 100, LogRecord.Prepare( recordFactory, 1500, Guid.NewGuid(), Guid.NewGuid(), 1500, 0, streamId, 99, PrepareFlags.Data, "event", new byte[0], null, DateTime.UtcNow), "Stream"); _eventCommitted = new StorageMessage.EventCommitted(2000, _eventRecord, isTfEof: true); _publisher = new InMemoryBus("bus"); _envelope = new PublishEnvelope(_publisher); _handler = new TestHandler <TestMessage>(); _publisher.Subscribe(_handler); _reply1 = new TestMessage(1); _reply2 = new TestMessage(3); _reply3 = new TestMessage(4); _it.Handle(_eventCommitted); }