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

◆ FromMetadataStream()

static MetadataReaderProvider System.Reflection.Metadata.MetadataReaderProvider.FromMetadataStream ( Stream stream,
MetadataStreamOptions options = MetadataStreamOptions::Default,
int size = 0 )
inlinestatic

Definition at line 65 of file MetadataReaderProvider.cs.

66 {
67 if (stream == null)
68 {
69 throw new ArgumentNullException("stream");
70 }
71 if (!stream.CanRead || !stream.CanSeek)
72 {
74 }
75 if (!options.IsValid())
76 {
77 throw new ArgumentOutOfRangeException("options");
78 }
79 long position = stream.Position;
80 int andValidateSize = StreamExtensions.GetAndValidateSize(stream, size, "stream");
81 bool flag = true;
83 try
84 {
85 bool isFileStream = FileStreamReadLightUp.IsFileStream(stream);
86 if ((options & MetadataStreamOptions.PrefetchMetadata) == 0)
87 {
88 result = new MetadataReaderProvider(new StreamMemoryBlockProvider(stream, position, andValidateSize, isFileStream, (options & MetadataStreamOptions.LeaveOpen) != 0));
89 flag = false;
90 }
91 else
92 {
93 result = new MetadataReaderProvider(StreamMemoryBlockProvider.ReadMemoryBlockNoLock(stream, isFileStream, position, andValidateSize));
94 }
95 }
96 finally
97 {
98 if (flag && (options & MetadataStreamOptions.LeaveOpen) == 0)
99 {
100 stream.Dispose();
101 }
102 }
103 return result;
104 }
static int GetAndValidateSize(Stream stream, int size, string streamParameterName)
static unsafe NativeHeapMemoryBlock ReadMemoryBlockNoLock(Stream stream, bool isFileStream, long start, int size)
MetadataReaderProvider(AbstractMemoryBlock metadataBlock)
static string StreamMustSupportReadAndSeek
Definition SR.cs:52
Definition SR.cs:7

References System.Reflection.Metadata.MetadataReaderProvider.MetadataReaderProvider(), System.Reflection.Internal.StreamExtensions.GetAndValidateSize(), System.Reflection.Internal.FileStreamReadLightUp.IsFileStream(), System.options, System.Reflection.Internal.StreamMemoryBlockProvider.ReadMemoryBlockNoLock(), System.stream, and System.SR.StreamMustSupportReadAndSeek.

Referenced by System.Reflection.Metadata.MetadataReaderProvider.FromPortablePdbStream().