Example #1
0
        private static Stream GetSeekableStream(IUnstructuredReader input, SeekableInputStreamHackMode inputStreamHackMode)
        {
            switch (inputStreamHackMode)
            {
            case SeekableInputStreamHackMode.Disabled:
                return(input.BaseStream);

            case SeekableInputStreamHackMode.CopyToMemoryStream:
                var ms = new MemoryStream((int)input.Length);
                input.BaseStream.CopyTo(ms);
                ms.Seek(0, SeekOrigin.Begin);
                return(ms);

            case SeekableInputStreamHackMode.ReflectIntoBaseStream:
                throw new NotImplementedException();

            case SeekableInputStreamHackMode.MemoryMappedFile:
                var mmf = MemoryMappedFile.CreateNew(Guid.NewGuid().ToString(), input.Length);
                using (var mmvs = mmf.CreateViewStream(0, input.Length, MemoryMappedFileAccess.Write))
                {
                    input.BaseStream.CopyTo(mmvs);
                }
                return(mmf.CreateViewStream(0, input.Length, MemoryMappedFileAccess.Read));

            default:
                throw new NotImplementedException();
            }
        }
Example #2
0
 public OrcExtractor(SeekableInputStreamHackMode streamHackMode = SeekableInputStreamHackMode.CopyToMemoryStream)
 {
     SeekableStreamHackMode = streamHackMode;
 }