Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Seek()

override long System.IO.Strategies.Net5CompatFileStreamStrategy.Seek ( long offset,
SeekOrigin origin )
inline

Definition at line 819 of file Net5CompatFileStreamStrategy.cs.

820 {
821 if (origin < SeekOrigin.Begin || origin > SeekOrigin.End)
822 {
823 throw new ArgumentException(SR.Argument_InvalidSeekOrigin, "origin");
824 }
826 {
827 ThrowHelper.ThrowObjectDisposedException_FileClosed();
828 }
829 if (!CanSeek)
830 {
831 ThrowHelper.ThrowNotSupportedException_UnseekableStream();
832 }
833 if (_writePos > 0)
834 {
836 }
837 else if (origin == SeekOrigin.Current)
838 {
840 }
841 _readPos = (_readLength = 0);
843 long num = _filePosition + (_readPos - _readLength);
844 long num2 = SeekCore(_fileHandle, offset, origin);
845 if (_appendStart != -1 && num2 < _appendStart)
846 {
847 SeekCore(_fileHandle, num, SeekOrigin.Begin);
848 throw new IOException(SR.IO_SeekAppendOverwrite);
849 }
850 if (_readLength > 0)
851 {
852 if (num == num2)
853 {
854 if (_readPos > 0)
855 {
856 Buffer.BlockCopy(GetBuffer(), _readPos, GetBuffer(), 0, _readLength - _readPos);
858 _readPos = 0;
859 }
860 if (_readLength > 0)
861 {
863 }
864 }
865 else if (num - _readPos < num2 && num2 < num + _readLength - _readPos)
866 {
867 int num3 = (int)(num2 - num);
868 Buffer.BlockCopy(GetBuffer(), _readPos + num3, GetBuffer(), 0, _readLength - (_readPos + num3));
869 _readLength -= _readPos + num3;
870 _readPos = 0;
871 if (_readLength > 0)
872 {
874 }
875 }
876 else
877 {
878 _readPos = 0;
879 _readLength = 0;
880 }
881 }
882 return num2;
883 }
long SeekCore(SafeFileHandle fileHandle, long offset, SeekOrigin origin, bool closeInvalidHandle=false)

References System.IO.Strategies.Net5CompatFileStreamStrategy._appendStart, System.IO.Strategies.Net5CompatFileStreamStrategy._fileHandle, System.IO.Strategies.Net5CompatFileStreamStrategy._filePosition, System.IO.Strategies.Net5CompatFileStreamStrategy._readLength, System.IO.Strategies.Net5CompatFileStreamStrategy._readPos, System.IO.Strategies.Net5CompatFileStreamStrategy._writePos, System.SR.Argument_InvalidSeekOrigin, System.Buffer.BlockCopy(), System.IO.Strategies.Net5CompatFileStreamStrategy.CanSeek, System.IO.Strategies.Net5CompatFileStreamStrategy.FlushWriteBuffer(), System.IO.Strategies.Net5CompatFileStreamStrategy.GetBuffer(), System.SR.IO_SeekAppendOverwrite, System.Runtime.InteropServices.SafeHandle.IsClosed, System.offset, System.IO.Strategies.Net5CompatFileStreamStrategy.SeekCore(), System.ThrowHelper.ThrowNotSupportedException_UnseekableStream(), System.ThrowHelper.ThrowObjectDisposedException_FileClosed(), and System.IO.Strategies.Net5CompatFileStreamStrategy.VerifyOSHandlePosition().