public bool ProcessEvent(
            string partition, CheckpointTag eventPosition, string category1, ResolvedEvent data,
            out string newState, out string newSharedState, out EmittedEventEnvelope[] emittedEvents)
        {
            newSharedState = null;
            emittedEvents  = null;
            newState       = null;

            if (data.PositionSequenceNumber != 0)
            {
                return(false); // not our event
            }
            var category = _streamCategoryExtractor.GetCategoryByStreamId(data.PositionStreamId);

            if (category == null)
            {
                return(true); // handled but not interesting
            }
            emittedEvents = new[]
            {
                new EmittedEventEnvelope(
                    new EmittedDataEvent(
                        "$category" + "-" + category, Guid.NewGuid(), SystemEventTypes.StreamReference, false,
                        data.PositionStreamId, null, eventPosition, expectedTag: null))
            };

            return(true);
        }
Exemple #2
0
        public bool ProcessEvent(
            string partition, CheckpointTag eventPosition, string category1, ResolvedEvent data,
            out string newState, out string newSharedState, out EmittedEventEnvelope[] emittedEvents)
        {
            newSharedState = null;
            emittedEvents  = null;
            newState       = null;
            string positionStreamId;
            var    isStreamDeletedEvent = StreamDeletedHelper.IsStreamDeletedEvent(
                data.PositionStreamId, data.EventType, data.Data, out positionStreamId);

            var category = _streamCategoryExtractor.GetCategoryByStreamId(positionStreamId);

            if (category == null)
            {
                return(true); // handled but not interesting
            }
            string linkTarget;

            if (data.EventType == SystemEventTypes.LinkTo)
            {
                linkTarget = data.Data;
            }
            else
            {
                linkTarget = data.EventSequenceNumber + "@" + data.EventStreamId;
            }

            emittedEvents = new[]
            {
                new EmittedEventEnvelope(
                    new EmittedLinkToWithRecategorization(
                        _categoryStreamPrefix + category, Guid.NewGuid(), linkTarget, eventPosition, expectedTag: null,
                        originalStreamId: positionStreamId, streamDeletedAt: isStreamDeletedEvent ? -1 : (int?)null))
            };

            return(true);
        }