Esempio n. 1
0
        public override void Dispose()
        {
            foreach (var node in _dirty)
            {
                var ixFileName  = Path.Combine(SessionFactory.Dir, string.Format("{0}.{1}.ix", CollectionId, node.Key));
                var tmpFileName = string.Format("{0}.tmp_ix", Path.GetFileNameWithoutExtension(ixFileName));

                using (var indexStream = new FileStream(
                           tmpFileName, FileMode.Append, FileAccess.Write, FileShare.None))
                {
                    node.Value.Serialize(indexStream, VectorStream, PostingsStream);
                }

                SessionFactory.RefreshIndex(CollectionId, node.Key, node.Value);

                File.Copy(tmpFileName, ixFileName, overwrite: true);
                File.Delete(tmpFileName);
            }

            ValueStream.Flush();
            KeyStream.Flush();
            DocStream.Flush();
            ValueIndexStream.Flush();
            KeyIndexStream.Flush();
            DocIndexStream.Flush();
            PostingsStream.Flush();
            VectorStream.Flush();

            base.Dispose();
        }
Esempio n. 2
0
 public virtual void Dispose()
 {
     if (ValueStream != null)
     {
         ValueStream.Dispose();
     }
     if (KeyStream != null)
     {
         KeyStream.Dispose();
     }
     if (DocStream != null)
     {
         DocStream.Dispose();
     }
     if (ValueIndexStream != null)
     {
         ValueIndexStream.Dispose();
     }
     if (KeyIndexStream != null)
     {
         KeyIndexStream.Dispose();
     }
     if (DocIndexStream != null)
     {
         DocIndexStream.Dispose();
     }
 }
Esempio n. 3
0
        public override Guid Deserialize(ValueStream stream)
        {
            var guidBytes = new byte[16];

            stream.Read(guidBytes, 0, guidBytes.Length);
            return(new Guid(guidBytes));
        }
Esempio n. 4
0
        public void ReferenceTypeSerializeBinaryTest477378791()
        {
            using (var ms = new ValueStream()) {
                var objs = new List <object>();

                objs.Add(new Uri("http://localhost"));
                objs.Add(new Rectangle(0, 0, 100, 100));

                // BinaryTree<int> btree = new BinaryTree<int>();
                // btree.AddRange(1, 2, 3, 4, 5, 6);
                // objs.Add(btree);

                // SerializerTool.BinarySerialize(objs, ms);
                SerializerTool.Serialize(objs, ms, BinaryFormatter);

                ms.Position = 0;
                Console.WriteLine("Original Objects  = " + ArrayTool.AsString(objs.ToArray()));
                Console.WriteLine("Binary Serialized =\r\n" + ms.GetHexDumpString());

                ms.Position = 0;
                // List<object> objs2 = (List<object>)SerializerTool.BinaryDeserialize(ms);
                var objs2 = SerializerTool.Deserialize <List <object> >(ms, BinaryFormatter);

                Console.WriteLine("Deserialized      = " + ArrayTool.AsString(objs2.ToArray()));

                for (int i = 0; i < objs.Count; i++)
                {
                    Assert.AreEqual(objs[i], objs2[i]);
                }
            }
        }
Esempio n. 5
0
        public override void Serialize(ValueStream stream, ushort data)
        {
            var union = new UnifiedUnion(data);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
        }
Esempio n. 6
0
 public void Dispose()
 {
     WritableValueStream.Dispose();
     ValueIndexStream.Dispose();
     WritableValueIndexStream.Dispose();
     WritableKeyMapStream.Dispose();
     ValueStream.Dispose();
 }
 public override float Deserialize(ValueStream stream)
 {
     return(new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).Single);
 }
Esempio n. 8
0
 public override uint Deserialize(ValueStream stream)
 {
     return(new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).UInt32);
 }
Esempio n. 9
0
        public TData Deserialize <TData>(ValueStream stream)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(Serializer));
            }

            return((TData)Deserialize(stream, typeof(TData)));
        }
Esempio n. 10
0
        public void Serialize <TData>(ValueStream stream, TData data)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(Serializer));
            }

            Serialize(stream, data, typeof(TData));
        }
Esempio n. 11
0
 public override double Deserialize(ValueStream stream)
 {
     return(new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).Double);
 }
Esempio n. 12
0
 public override long Deserialize(ValueStream stream)
 {
     return(new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).Int64);
 }
Esempio n. 13
0
        public void DoubleResizingOnDifferentSize()
        {
            using (var stream = new ValueStream())
            {
                stream.Write(new byte[10], 0, 10);
                stream.Write(new byte[20], 0, 20);
                stream.Write(new byte[50], 0, 50);

                Assert.Equal(80, stream.Position);
                Assert.Equal(128, stream.Length);
            }
        }
Esempio n. 14
0
        public override void Serialize(ValueStream stream, long data)
        {
            var union = new UnifiedUnion(data);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);
            stream.WriteByte(union.Byte5);
            stream.WriteByte(union.Byte6);
            stream.WriteByte(union.Byte7);
            stream.WriteByte(union.Byte8);
        }
        public override void Serialize(ValueStream stream, string data)
        {
            var union = new UnifiedUnion(data.Length);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);

            var stringBuffer = Encoding.UTF8.GetBytes(data);

            stream.Write(stringBuffer, 0, stringBuffer.Length);
        }
        public override DateTime Deserialize(ValueStream stream)
        {
            var binary = new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).Int64;

            return(DateTime.FromBinary(binary));
        }
        public override void Serialize(ValueStream stream, DateTime data)
        {
            var binary = data.ToBinary();

            var union = new UnifiedUnion(binary);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);
            stream.WriteByte(union.Byte5);
            stream.WriteByte(union.Byte6);
            stream.WriteByte(union.Byte7);
            stream.WriteByte(union.Byte8);
        }
Esempio n. 18
0
        public Message GetMessage <TData>(IPayload <TData> payload)
        {
            using (var stream = new ValueStream(arrayPool))
            {
                var commandId = commandHolder.GetCommand(payload.CommandType);

                stream.WriteInt32(commandId);

                serializer.Serialize(stream, payload.Data);
                compression.Compress(stream);
                encryption.Encrypt(stream);

                return(new Message(stream.Buffer, (int)stream.Length));
            }
        }
        public override string Deserialize(ValueStream stream)
        {
            var union = new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte());

            var length = union.Int32;

            var stringBuffer = new byte[length];

            stream.Read(stringBuffer, 0, stringBuffer.Length);
            return(Encoding.UTF8.GetString(stringBuffer));
        }
        public void Dispose()
        {
            if (_disposed)
            {
                return;
            }

            WritableValueStream.Dispose();
            ValueIndexStream.Dispose();
            WritableValueIndexStream.Dispose();
            WritableKeyMapStream.Dispose();
            ValueStream.Dispose();

            _disposed = true;
        }
Esempio n. 21
0
        public object Deserialize(ValueStream stream, Type dataType)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(Serializer));
            }

            if (dataType == null)
            {
                throw new ArgumentNullException(nameof(dataType));
            }

            if (!dataType.IsValueType || Nullable.GetUnderlyingType(dataType) != null)
            {
                if (stream.ReadByte() == 0)
                {
                    return(null);
                }
            }

            var dto = converterContainer.TryGetDto(dataType);

            if (dto?.Converter != null)
            {
                return(dto.Converter.DeserializeObject(stream, dataType));
            }

            if (stream.ReadByte() == 1)
            {
                var aliasBytes = new byte[4];
                stream.Read(aliasBytes, 0, aliasBytes.Length);

                var alias = new UnifiedUnion(aliasBytes[0], aliasBytes[1], aliasBytes[2], aliasBytes[3]).Int32;

                dataType = converterContainer.GetTypeFromAlias(alias);
            }

            var instance = activator.Create(dataType);

            var propertyInfo = EnsureProperties(dataType);

            for (var i = 0; i < propertyInfo.Length; i++)
            {
                propertyInfo[i].SetValue(instance, Deserialize(stream, propertyInfo[i].PropertyType));
            }

            return(instance);
        }
Esempio n. 22
0
        public override void Serialize(ValueStream stream, IList elements)
        {
            var elementType = elements.GetType().GetGenericArguments()[0];

            var union = new UnifiedUnion(elements.Count);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);

            for (var i = 0; i < elements.Count; i++)
            {
                serializer.Serialize(stream, elements[i], elementType);
            }
        }
        public override void Serialize(ValueStream stream, Array elements)
        {
            var elementType = elements.GetType().GetElementType();

            var union = new UnifiedUnion(elements.Length);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);

            for (var i = 0; i < elements.Length; i++)
            {
                serializer.Serialize(stream, elements.GetValue(i), elementType);
            }
        }
Esempio n. 24
0
        public override void Serialize(ValueStream stream, ICollection elements)
        {
            var elementType = elements.GetType().GetGenericArguments()[0];

            var union = new UnifiedUnion(elements.Count);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);

            foreach (var element in elements)
            {
                serializer.Serialize(stream, element, elementType);
            }
        }
Esempio n. 25
0
        public void AllocationTests()
        {
            var input1 = new byte[5];
            var input2 = new byte[60];
            var input3 = new byte[100];
            var input4 = new byte[130];

            // 42 2 1
            var gg1 = GC.CollectionCount(0);
            var gg2 = GC.CollectionCount(1);
            var gg3 = GC.CollectionCount(2);

            using (var pool = new ArrayPoolConfig().Create())
            {
                for (var i = 0; i < 100_000_0; i++)
                {
                    using (var stream = new ValueStream(pool))
                    {
                        stream.Write(input1, 0, input1.Length);
                        stream.Write(input2, 0, input2.Length);
                        stream.Write(input3, 0, input3.Length);
                        stream.Write(input4, 0, input4.Length);
                    }
                }
            }

            var g1 = GC.CollectionCount(0);
            var g2 = GC.CollectionCount(1);
            var g3 = GC.CollectionCount(2);

            for (var i = 0; i < 100_000_0; i++)
            {
                using (var stream = new System.IO.MemoryStream())
                {
                    stream.Write(input1, 0, input1.Length);
                    stream.Write(input2, 0, input2.Length);
                    stream.Write(input3, 0, input3.Length);
                    stream.Write(input4, 0, input4.Length);
                }
            }

            // 565 2 1
            var g11 = GC.CollectionCount(0);
            var g22 = GC.CollectionCount(1);
            var g33 = GC.CollectionCount(2);
        }
        public override void Serialize(ValueStream stream, IEnumerable data)
        {
            var elements    = data.Cast <object>().ToList();
            var elementType = data.GetType().GetGenericArguments()[0];

            var union = new UnifiedUnion(elements.Count);

            stream.WriteByte(union.Byte1);
            stream.WriteByte(union.Byte2);
            stream.WriteByte(union.Byte3);
            stream.WriteByte(union.Byte4);

            foreach (var element in elements)
            {
                serializer.Serialize(stream, element, elementType);
            }
        }
Esempio n. 27
0
        public void StreamReadsAndWrites()
        {
            var input = new byte[] { 1, 2, 3, 4, 5 };

            using (var stream = new ValueStream())
            {
                stream.Write(input, 0, input.Length);

                stream.Seek(0);

                var result = new byte[5];
                var read   = stream.Read(result, 0, result.Length);

                Assert.Equal(result.Length, read);
                Assert.Equal(input, result);
            }
        }
Esempio n. 28
0
        public virtual void Dispose()
        {
            ValueStream.Dispose();
            KeyStream.Dispose();
            DocStream.Dispose();
            ValueIndexStream.Dispose();
            KeyIndexStream.Dispose();
            DocIndexStream.Dispose();

            if (PostingsStream != null)
            {
                PostingsStream.Dispose();
            }
            if (VectorStream != null)
            {
                VectorStream.Dispose();
            }
        }
        public override object DeserializeObject(ValueStream stream, Type type)
        {
            var elementType = type.GetElementType();

            var length = new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte()).Int32;

            var array = Array.CreateInstance(elementType, length);

            for (var i = 0; i < length; i++)
            {
                array.SetValue(serializer.Deserialize(stream, elementType), i);
            }

            return(array);
        }
Esempio n. 30
0
        public void ReadByteWriteByteWorks()
        {
            using (var stream = new ValueStream())
            {
                stream.WriteByte(1);
                stream.WriteByte(2);
                stream.WriteByte(3);
                stream.WriteByte(4);
                stream.WriteByte(5);

                stream.Seek(0);

                Assert.Equal(1, stream.ReadByte());
                Assert.Equal(2, stream.ReadByte());
                Assert.Equal(3, stream.ReadByte());
                Assert.Equal(4, stream.ReadByte());
                Assert.Equal(5, stream.ReadByte());
            }
        }