/// <nodoc /> private ContentLocationEntry(MachineIdSet locations, long contentSize, UnixTime lastAccessTimeUtc, UnixTime?creationTimeUtc) { Locations = locations; ContentSize = contentSize; LastAccessTimeUtc = lastAccessTimeUtc; _creationTimeUtc = creationTimeUtc; }
/// <nodoc /> private ContentLocationEntry(MachineIdSet locations, long contentSize, UnixTime lastAccessTimeUtc, UnixTime?creationTimeUtc) { Contract.RequiresNotNull(locations); Locations = locations; ContentSize = contentSize; LastAccessTimeUtc = lastAccessTimeUtc; _creationTimeUtc = creationTimeUtc; }
/// <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)); }
/// <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; }
/// <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); }
/// <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)); }