/// <nodoc />
        public IEnumerable <ContentLocationEventData> DeserializeEvents(BuildXLReader reader)
        {
            return(SynchronizeIfNeeded(
                       synchronized =>
            {
                // Need to "materialize" the result if synchronization is needed.
                // Otherwise the lock will be released before all the data is consumed from the
                if (synchronized)
                {
                    return deserializeEventsCore().ToList();
                }
                else
                {
                    return deserializeEventsCore();
                }
            }));

            IEnumerable <ContentLocationEventData> deserializeEventsCore()
            {
                var entriesCount = reader.ReadInt32Compact();

                for (int i = 0; i < entriesCount; i++)
                {
                    // Using default as eventTimeUtc because reconciliation events should not have touches.
                    yield return(ContentLocationEventData.Deserialize(reader, eventTimeUtc: default));
                }
            }
        }
Exemplo n.º 2
0
        /// <nodoc />
        public IEnumerable <ContentLocationEventData> DeserializeReconcileData(BuildXLReader reader)
        {
            var entriesCount = reader.ReadInt32Compact();

            for (int i = 0; i < entriesCount; i++)
            {
                // Using default as eventTimeUtc because reconciliation events should not have touches.
                yield return(ContentLocationEventData.Deserialize(reader, eventTimeUtc: default));
            }
        }
Exemplo n.º 3
0
        /// <nodoc />
        public IReadOnlyList <ContentLocationEventData> DeserializeEvents(EventData message, DateTime?eventTimeUtc = null)
        {
            if (eventTimeUtc == null)
            {
                Contract.Assert(message.SystemProperties != null, "Either eventTimeUtc argument must be provided or message.SystemProperties must not be null. Did you forget to provde eventTimeUtc arguments in tests?");
                eventTimeUtc = message.SystemProperties.EnqueuedTimeUtc;
            }

            var data = message.Body;

            return(_reader.DeserializeSequence(data, reader => ContentLocationEventData.Deserialize(reader, eventTimeUtc.Value)).ToList());
        }