Beispiel #1
0
        public ProcessStrongFingerprintComputationData(BinaryLogReader.EventReader reader)
        {
            PathSetHash = reader.ReadContentHash();
            var maybePathSet = ObservedPathSet.TryDeserialize(reader.PathTable, reader, pathReader: r => r.ReadAbsolutePath(), stringReader: r => ((BinaryLogReader.EventReader)r).ReadDynamicStringId());

            Contract.Assert(maybePathSet.Succeeded);
            PathSet = maybePathSet.Result;
            PriorStrongFingerprints = reader.ReadReadOnlyList(r => r.ReadStrongFingerprint());
            Succeeded = reader.ReadBoolean();

            if (Succeeded)
            {
                IsStrongFingerprintHit    = reader.ReadBoolean();
                ObservedInputs            = reader.ReadReadOnlyArray(r => ObservedInput.Deserialize(r));
                ComputedStrongFingerprint = reader.ReadStrongFingerprint();
                IsNewlyPublishedAugmentedWeakFingerprint = reader.ReadBoolean();
                AugmentedWeakFingerprint = reader.ReadNullableStruct(r => r.ReadWeakFingerprint());
            }
            else
            {
                IsStrongFingerprintHit    = false;
                ObservedInputs            = default;
                ComputedStrongFingerprint = default;
                IsNewlyPublishedAugmentedWeakFingerprint = false;
                AugmentedWeakFingerprint = default;
            }
        }
Beispiel #2
0
 /// <inheritdoc />
 public void DeserializeAndUpdate(BinaryLogReader.EventReader reader)
 {
     PipId           = new PipId(reader.ReadUInt32Compact());
     Kind            = (FingerprintComputationKind)reader.ReadInt32Compact();
     WeakFingerprint = reader.ReadWeakFingerprint();
     StrongFingerprintComputations = reader.ReadReadOnlyList(r => new ProcessStrongFingerprintComputationData((BinaryLogReader.EventReader)r));
 }
Beispiel #3
0
 /// <summary>
 /// Translates a serialized stream containing an event (of this type) into an invocation on an <see cref="IExecutionLogTarget"/>.
 /// </summary>
 /// <remarks>
 /// This method hides the event-data type and so is suitable for generic deserialization.
 /// </remarks>
 public abstract void DeserializeAndLogToTarget(BinaryLogReader.EventReader eventReader, IExecutionLogTarget target);