예제 #1
0
        public ReadSession(
            SegmentInfo version,
            DocHashReader docHashReader,
            BlockInfoReader addressReader,
            Stream stream)
        {
            Version = version;

            Stream        = stream;
            DocHashReader = docHashReader;
            AddressReader = addressReader;
            BlockSize     = BlockSerializer.SizeOfBlock();
            Stream.Seek(Version.KeyIndexOffset, SeekOrigin.Begin);
            KeyIndex = DocumentSerializer.ReadKeyIndex(Stream, Version.KeyIndexSize);
        }
예제 #2
0
        public DocumentTableStream(Stream stream, SegmentInfo ix, int skip = 0, int take = int.MaxValue)
            : base(ix.PrimaryKeyFieldName)
        {
            _dataFile = stream;
            _ix       = ix;
            _dataFile.Seek(_ix.KeyIndexOffset, SeekOrigin.Begin);
            var keyIndex = DocumentSerializer.ReadKeyIndex(_dataFile, _ix.KeyIndexSize);

            _hashReader     = new DocHashReader(_dataFile, _ix.DocHashOffset, leaveOpen: false);
            _addressReader  = new BlockInfoReader(_dataFile, _ix.DocAddressesOffset);
            _documentReader = new DocumentReader(
                _dataFile, _ix.Compression, keyIndex, _ix.KeyIndexOffset + _ix.KeyIndexSize, leaveOpen: false);

            _skip = skip;
            _take = take;
        }
예제 #3
0
 public FullTextReadSession(SegmentInfo version, DocHashReader docHashReader, BlockInfoReader addressReader, Stream stream) : base(version, docHashReader, addressReader, stream)
 {
 }
예제 #4
0
 public NetworkFullTextReadSession(
     IPEndPoint postingsEndpoint, IPEndPoint documentsEndpoint, SegmentInfo version, DocHashReader docHashReader, BlockInfoReader addressReader, Stream stream)
     : base(version, docHashReader, addressReader, stream)
 {
     _postingsReader  = new NetworkPostingsReader(postingsEndpoint);
     _documentsReader = new NetworkBlockReader(documentsEndpoint);
 }