BTDB.EventStoreLayer.ReadOnlyEventStore.Process C# (CSharp) Method

Process() private method

private Process ( BlockType blockType, ByteBuffer block, IEventStoreObserver observer ) : bool
blockType BlockType
block ByteBuffer
observer IEventStoreObserver
return bool
        bool Process(BlockType blockType, ByteBuffer block, IEventStoreObserver observer)
        {
            if ((blockType & BlockType.Compressed) != 0)
            {
                CompressionStrategy.Decompress(ref block);
            }
            var reader = new ByteBufferReader(block);
            if ((blockType & BlockType.HasTypeDeclaration) != 0)
            {
                Mapping.LoadTypeDescriptors(reader);
            }
            var metadata = (blockType & BlockType.HasMetadata) != 0 ? Mapping.LoadObject(reader) : null;
            uint eventCount;
            if ((blockType & BlockType.HasOneEvent) != 0)
            {
                eventCount = 1;
            }
            else if ((blockType & BlockType.HasMoreEvents) != 0)
            {
                eventCount = reader.ReadVUInt32();
            }
            else
            {
                eventCount = 0;
            }
            var readEvents = observer.ObservedMetadata(metadata, eventCount);
            if (!readEvents) return observer.ShouldStopReadingNextEvents();
            var events = new object[eventCount];
            for (var i = 0; i < eventCount; i++)
            {
                events[i] = Mapping.LoadObject(reader);
            }
            observer.ObservedEvents(events);
            return observer.ShouldStopReadingNextEvents();
        }