GetReader() 공개 메소드

Returns a reader to the temp file for exclusive use. Release method must be called to return the reader to the pool when finished.
public GetReader ( ) : Reader
리턴 FiftyOne.Foundation.Mobile.Detection.Readers.Reader
        private static TrieProvider Create(Pool pool)
        {
            var reader = pool.GetReader();
            try
            {
                // Check the version number is correct for this API.
                var version = reader.ReadUInt16();

                // Construct the right provider.
                switch(version)
                {
                    case 3:
                        return new TrieProviderV3(
                            Encoding.ASCII.GetString(reader.ReadBytes((int)reader.ReadUInt32())),
                            ReadStrings(reader),
                            ReadProperties(reader),
                            ReadDevices(reader),
                            ReadLookupList(reader),
                            reader.ReadInt64(),
                            reader.BaseStream.Position,
                            pool);
                    case 32:
                        return new TrieProviderV32(
                            Encoding.ASCII.GetString(reader.ReadBytes((int)reader.ReadUInt32())),
                            ReadStrings(reader),
                            ReadHeaders(reader),
                            ReadProperties(reader),
                            ReadDevices(reader),
                            ReadLookupList(reader),
                            reader.ReadInt64(),
                            reader.BaseStream.Position,
                            pool);
                    default:
                        throw new MobileException(String.Format(
                            "Version mismatch. Data is version '{0}' for '{1}' reader",
                            version,
                            String.Join(",", BinaryConstants.SupportedTrieFormatVersions.Select(i => i.Value.ToString()))));
                }
            }
            finally
            {
                // Return the reader back to the pool.
                pool.Release(reader);
            }
        }