public override long Seek(long offset, SeekOrigin origin) { switch (origin) { case SeekOrigin.Begin: this.Position = offset; break; case SeekOrigin.Current: this.Position += offset; break; case SeekOrigin.End: this.Position = this.Length + offset; break; default: throw new ArgumentException("Unexpected value of " + origin.GetType().Name + ".", "origin"); } return(this.Position); }
/// <summary> /// Sets the position within the current stream. /// </summary> /// <returns> /// The new position within the current stream. /// </returns> /// <param name="offset">A byte offset relative to the <paramref name="origin"/> parameter. </param> /// <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"/> indicating the reference point used to obtain the new position. </param> /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> /// <exception cref="T:System.NotSupportedException">The stream does not support seeking, such as if the stream is constructed from a pipe or console output. </exception> /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> public override long Seek(long offset, SeekOrigin origin) { if (isDisposed) { throw new ObjectDisposedException(GetType().FullName); } switch (origin) { case SeekOrigin.Begin: if (offset < 0 || offset >= trackDataLength) { throw new EndOfStreamException(); } trackDataPosition = (int)offset; break; case SeekOrigin.Current: var newPosition = trackDataPosition + offset; if (newPosition < 0 || newPosition >= trackDataLength) { throw new EndOfStreamException(); } trackDataPosition = (int)newPosition; break; case SeekOrigin.End: newPosition = trackDataLength + offset; if (newPosition < 0 || newPosition >= trackDataLength) { throw new EndOfStreamException(); } trackDataPosition = (int)newPosition; break; default: throw new InvalidEnumArgumentException("origin", (int)origin, origin.GetType()); } return(trackDataPosition); }
/// <summary> /// Sets the position within the current stream. /// </summary> /// <returns> /// The new position within the current stream. /// </returns> /// <param name="offset">A byte offset relative to the <paramref name="origin"/> parameter. </param> /// <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"/> indicating the reference point used to obtain the new position. </param> /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> /// <exception cref="T:System.NotSupportedException">The stream does not support seeking, such as if the stream is constructed from a pipe or console output. </exception> /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> public override long Seek(long offset, SeekOrigin origin) { if (isDisposed) throw new ObjectDisposedException(GetType().FullName); switch (origin) { case SeekOrigin.Begin: if (offset < 0 || offset>= trackDataLength) throw new EndOfStreamException(); trackDataPosition = (int) offset; break; case SeekOrigin.Current: var newPosition = trackDataPosition + offset; if (newPosition < 0 || newPosition >= trackDataLength) throw new EndOfStreamException(); trackDataPosition = (int) newPosition; break; case SeekOrigin.End: newPosition = trackDataLength + offset; if (newPosition < 0 || newPosition >= trackDataLength) throw new EndOfStreamException(); trackDataPosition = (int) newPosition; break; default: throw new InvalidEnumArgumentException("origin", (int) origin, origin.GetType()); } return trackDataPosition; }
public override long Seek(long offset, SeekOrigin origin) { switch (origin) { case SeekOrigin.Begin: this.Position = offset; break; case SeekOrigin.Current: this.Position += offset; break; case SeekOrigin.End: this.Position = this.Length + offset; break; default: throw new ArgumentException("Unexpected value of "+origin.GetType().Name+".", "origin"); } return this.Position; }