using System; namespace BestHTTP { /// /// /// public sealed class HTTPRange { /// /// The first byte's position that the server sent. /// public int FirstBytePos { get; private set; } /// /// The last byte's position that the server sent. /// public int LastBytePos { get; private set; } /// /// Indicates the total length of the full entity-body on the server, -1 if this length is unknown or difficult to determine. /// public int ContentLength { get; private set; } /// /// /// public bool IsValid { get; private set; } internal HTTPRange() { this.ContentLength = -1; this.IsValid = false; } internal HTTPRange(int contentLength) { this.ContentLength = contentLength; this.IsValid = false; } internal HTTPRange(int firstBytePosition, int lastBytePosition, int contentLength) { this.FirstBytePos = firstBytePosition; this.LastBytePos = lastBytePosition; this.ContentLength = contentLength; // A byte-content-range-spec with a byte-range-resp-spec whose last-byte-pos value is less than its first-byte-pos value, or whose instance-length value is less than or equal to its last-byte-pos value, is invalid. this.IsValid = this.FirstBytePos <= this.LastBytePos && this.ContentLength > this.LastBytePos; } public override string ToString() { return string.Format("{0}-{1}/{2} (valid: {3})", FirstBytePos, LastBytePos, ContentLength, IsValid); } } }