Esempio n. 1
0
        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);
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        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);
        }