Example #1
0
        private static unsafe void VerifyData
            (byte *singleByte, ValueReader reader, int pos, int desired)
        {
            int val;

            reader.Skip(pos);
            reader.Read(singleByte, 1);
            val = *singleByte;
            Assert.Equal(desired, val);
        }
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            Logger.Instance?.WriteLine($"<- {Type}");
            var values = new List <object>();

            foreach (var format in previousFormatToken.Formats)
            {
                values.Add(ValueReader.Read(stream, format, env));
            }
            Values = values.ToArray();
        }
Example #3
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var parameters = new List <Parameter>();

            foreach (var format in previous.Formats)
            {
                var p = new Parameter
                {
                    Format = format,
                    Value  = ValueReader.Read(stream, format, env)
                };
                parameters.Add(p);
            }
            Parameters = parameters.ToArray();
        }
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var parameters = new List <Parameter>();

            foreach (var format in previous.Formats)
            {
                var p = new Parameter
                {
                    Format = format,
                    Value  = ValueReader.Read(stream, format, env)
                };
                parameters.Add(p);
            }
            Parameters = parameters.ToArray();
            Logger.Instance?.WriteLine($"<- {Type}: {Parameters.Length} parameters");
        }
Example #5
0
        public StreamBitArray(ValueReader reader)
        {
            if (!BitConverter.IsLittleEndian)
                throw new NotSupportedException("Big endian conversion is not supported yet.");

            SetCount = reader.ReadLittleEndianInt32();

            unsafe
            {
                fixed (int* i = _inner)
                {
                    int read = reader.Read((byte*)i, _inner.Length * sizeof(int));
                    if (read < _inner.Length * sizeof(int))
                        throw new EndOfStreamException();
                }
            }
        }
Example #6
0
        private void DeleteTermsForIndexEntry(SnapshotReader snapshot, ValueReader reader, long id, int fieldId)
        {
            var termBuffer = _bufferPool.Take(reader.Length);

            _usedBuffers.Add(termBuffer);
            reader.Read(termBuffer, 0, reader.Length);
            var termSlice = new Slice(termBuffer, (ushort)reader.Length);

            var tree = GetTreeName(fieldId);

            using (var termIt = snapshot.MultiRead(tree, termSlice))
            {
                var currentFieldDocument = _bufferPool.Take(FullTextIndex.FieldDocumentSize);
                try
                {
                    if (termIt.Seek(new Slice(currentFieldDocument)) == false)
                    {
                        return;
                    }
                    do
                    {
                        termIt.CurrentKey.CopyTo(currentFieldDocument);

                        if (EndianBitConverter.Big.ToInt64(currentFieldDocument, 0) != id)
                        {
                            break;
                        }

                        var valueBuffer = _bufferPool.Take(termIt.CurrentKey.Size);
                        _usedBuffers.Add(valueBuffer);
                        termIt.CurrentKey.CopyTo(valueBuffer);
                        _writeBatch.MultiDelete(termSlice, new Slice(valueBuffer), tree);
                    } while (termIt.MoveNext());
                }
                finally
                {
                    _bufferPool.Return(currentFieldDocument);
                }
            }
        }
Example #7
0
        public StreamBitArray(ValueReader reader)
        {
            if (!BitConverter.IsLittleEndian)
            {
                throw new NotSupportedException("Big endian conversion is not supported yet.");
            }

            SetCount = reader.ReadLittleEndianInt32();

            unsafe
            {
                fixed(int *i = _inner)
                {
                    int read = reader.Read((byte *)i, _inner.Length * sizeof(int));

                    if (read < _inner.Length * sizeof(int))
                    {
                        throw new EndOfStreamException();
                    }
                }
            }
        }