Esempio n. 1
0
 /// <nodoc />
 private ContentLocationEntry(MachineIdSet locations, long contentSize, UnixTime lastAccessTimeUtc, UnixTime?creationTimeUtc)
 {
     Locations         = locations;
     ContentSize       = contentSize;
     LastAccessTimeUtc = lastAccessTimeUtc;
     _creationTimeUtc  = creationTimeUtc;
 }
Esempio n. 2
0
 /// <nodoc />
 private ContentLocationEntry(MachineIdSet locations, long contentSize, UnixTime lastAccessTimeUtc, UnixTime?creationTimeUtc)
 {
     Contract.RequiresNotNull(locations);
     Locations         = locations;
     ContentSize       = contentSize;
     LastAccessTimeUtc = lastAccessTimeUtc;
     _creationTimeUtc  = creationTimeUtc;
 }
Esempio n. 3
0
        /// <summary>
        /// Builds an instance from a binary stream.
        /// </summary>
        public static ContentLocationEntry Deserialize(BuildXLReader reader)
        {
            var size                 = reader.ReadInt64Compact();
            var locations            = MachineIdSet.Deserialize(reader);
            var creationTimeUtc      = reader.ReadUnixTime();
            var lastAccessTimeOffset = reader.ReadInt64Compact();
            var lastAccessTime       = new UnixTime(creationTimeUtc.Value + lastAccessTimeOffset);

            return(Create(locations, size, lastAccessTime, creationTimeUtc));
        }
Esempio n. 4
0
        /// <nodoc />
        public MachineList(MachineIdSet locations, Func <MachineId, MachineLocation> resolvePath, MachineReputationTracker reputationTracker, bool randomize)
        {
            _locations         = locations;
            _resolvePath       = resolvePath;
            _reputationTracker = reputationTracker;
            _randomize         = randomize;

            // Capture the count rather than recomputing every time
            Count = locations.Count;
        }
Esempio n. 5
0
        /// <nodoc />
        public void Serialize(BuildXLWriter writer)
        {
            MachineIdSet serializableInstance = this;

            if (Format == SetFormat.Bits)
            {
                if (Count <= BitMachineIdSetThreshold)
                {
                    serializableInstance = new ArrayMachineIdSet(EnumerateMachineIds().Select(id => (ushort)id.Index).ToArray());
                }
            }
            else
            {
                if (Count > BitMachineIdSetThreshold)
                {
                    serializableInstance = BitMachineIdSet.EmptyInstance.SetExistence(this, exists: true);
                }
            }

            writer.Write((byte)serializableInstance.Format);
            serializableInstance.SerializeCore(writer);
        }
Esempio n. 6
0
        /// <summary>
        /// Factory method that creates a valid content location.
        /// </summary>
        public static ContentLocationEntry Create(MachineIdSet locations, long contentSize, UnixTime lastAccessTimeUtc, UnixTime?creationTimeUtc = null)
        {
            Contract.Requires(lastAccessTimeUtc != default);

            return(new ContentLocationEntry(locations, contentSize, lastAccessTimeUtc, creationTimeUtc));
        }