Ejemplo n.º 1
0
 /// <summary>
 /// 反序列化父节点
 /// </summary>
 /// <param name="deSerializer"></param>
 protected void deSerializeParent(AutoCSer.BinaryDeSerializer deSerializer)
 {
     if (deSerializer.CheckNullValue() != 0)
     {
         DeSerialize(deSerializer, out Parent);
     }
 }
Ejemplo n.º 2
0
 protected void deSerializeParameter <parameterType>(AutoCSer.BinaryDeSerializer deSerializer, ref parameterType parameter)
 {
     if (deSerializer.CheckNullValue() != 0)
     {
         AutoCSer.BinarySerialize.TypeDeSerializer <parameterType> .DeSerialize(deSerializer, ref parameter);
     }
 }
Ejemplo n.º 3
0
        internal bool DeSerialize <valueType>(ref SubArray <byte> data, ref valueType value, bool isSimpleSerialize)
            where valueType : struct
        {
            if ((CommandIndex & (uint)CommandFlags.JsonSerialize) == 0)
            {
                if (isSimpleSerialize)
                {
                    fixed(byte *dataFixed = data.GetFixedBuffer())
                    {
                        byte *start = dataFixed + data.Start, end = start + data.Length;

                        return(SimpleSerialize.TypeDeSerializer <valueType> .DeSerialize(start, ref value, end) == end);
                    }
                }
                if (ReceiveDeSerializer == null)
                {
                    ReceiveDeSerializer = AutoCSer.BinaryDeSerializer.YieldPool.Default.Pop() ?? new AutoCSer.BinaryDeSerializer();
                    ReceiveDeSerializer.SetTcpServer(binaryDeSerializeConfig, this);
                }
                return(ReceiveDeSerializer.DeSerializeTcpServer(ref data, ref value));
                //if (ReceiveDeSerializer.DeSerializeTcpServer(ref data, ref value)) return true;
                //if (data.Length > 1 << 20) System.IO.File.WriteAllBytes((++testIdentity).ToString() + "." + data.Length.ToString(), data.ToArray());
                //return false;
            }
            if (ReceiveJsonDeSerializer == null)
            {
                ReceiveJsonDeSerializer = AutoCSer.JsonDeSerializer.YieldPool.Default.Pop() ?? new AutoCSer.JsonDeSerializer();
                ReceiveJsonDeSerializer.SetTcpServer();
            }
            return(ReceiveJsonDeSerializer.DeSerializeTcpServer(ref data, ref value));
        }
Ejemplo n.º 4
0
        private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            byte *read = deSerializer.Read;
            int   size = *(int *)read;

            if (size <= 0)
            {
                if (size == 0)
                {
                    Buffer.SetNull();
                    State              = (MemberState)(byte)*(int *)(read + sizeof(int));
                    deSerializer.Read += sizeof(int) * 2;
                }
                else
                {
                    Buffer.Start       = -size;
                    deSerializer.Read += sizeof(int);
                }
            }
            else if (size == Buffer.Length)
            {
                if (deSerializer.MoveReadAny(sizeof(int) + size + (-size & 3)))
                {
                    fixed(byte *bufferFixed = Buffer.GetFixedBuffer()) AutoCSer.Memory.Common.CopyNotNull(read + sizeof(int), bufferFixed + Buffer.Start, size);

                    State = MemberState.Remote;
                }
            }
            else
            {
                deSerializer.State = BinarySerialize.DeSerializeState.IndexOutOfRange;
            }
        }
Ejemplo n.º 5
0
        internal static void GetQueryData(AutoCSer.BinaryDeSerializer deSerializer, ref SubArray <byte> queryData)
        {
            byte *read = deSerializer.Read;

            if (deSerializer.MoveRead(*(int *)read))
            {
                deSerializer.DeSerializeTcpServer(ref queryData, read, *(int *)read);
            }
        }
Ejemplo n.º 6
0
 private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     if (deSerializer.CheckNullValue() != 0)
     {
         byte *read = deSerializer.Read;
         deSerializer.DeSerializeTcpServer(ref LoadData, read + sizeof(int), *(int *)read);
         deSerializer.MoveRead(LoadData.Length + sizeof(int));
     }
 }
Ejemplo n.º 7
0
 private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     AutoCSer.Metadata.MemberMap oldMemberMap = deSerializer.SetCustomMemberMap(MemberMap);
     try
     {
         deSerializer.TypeDeSerialize(ref Value);
     }
     finally { MemberMap = (AutoCSer.Metadata.MemberMap <valueType>)deSerializer.SetCustomMemberMap(oldMemberMap); }
 }
Ejemplo n.º 8
0
        private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            byte *read = deSerializer.Read;

            if (deSerializer.MoveRead((*(int *)read + (sizeof(int) + 3)) & (int.MaxValue - 3)))
            {
                deSerializer.DeSerializeTcpServer(ref Data, read + sizeof(int), *(int *)read);
            }
        }
Ejemplo n.º 9
0
        private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            MemberMap memberMap = deSerializer.SetCustomMemberMap(MemberMap);

            try
            {
                deSerializer.TypeDeSerialize(ref Value);
            }
            finally { MemberMap = deSerializer.SetCustomMemberMap(memberMap); }
        }
Ejemplo n.º 10
0
 protected override void deSerializeParameter(AutoCSer.BinaryDeSerializer deSerializer)
 {
     #region LOOP IntputParameters
     #region IF ParameterType.IsNull
     base.deSerializeParameter(deSerializer, ref @ParameterName);
     #endregion IF ParameterType.IsNull
     #region NOT ParameterType.IsNull
     base.deSerializeParameterStruct(deSerializer, ref @ParameterName);
     #endregion NOT ParameterType.IsNull
     #endregion LOOP IntputParameters
 }
Ejemplo n.º 11
0
 private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     if (deSerializer.MoveReadAny(sizeof(ulong) * 4))
     {
         byte *dataStart = deSerializer.Read;
         Ticks    = *(ulong *)(dataStart - sizeof(ulong) * 4);
         Identity = *(ulong *)(dataStart - sizeof(ulong) * 3);
         Low      = *(ulong *)(dataStart - sizeof(ulong) * 2);
         High     = *(ulong *)(dataStart - sizeof(ulong));
     }
 }
Ejemplo n.º 12
0
        private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            switch (deSerializer.TypeDeSerialize <int>())
            {
            case 1: Value = null; return;

            case 2: Value = string.Empty; return;

            default: deSerializer.MoveRead(-1); return;
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 获取操作数据
        /// </summary>
        /// <param name="deSerializer"></param>
        /// <returns></returns>
        internal static Buffer GetOperationData(AutoCSer.BinaryDeSerializer deSerializer)
        {
            byte *read = deSerializer.Read;
            int   size = *(int *)read;

            if (deSerializer.MoveRead(size))
            {
                Buffer buffer = BufferCount.GetBuffer(size);
                deSerializer.CopyTo(read, ref buffer.Array);
                return(buffer);
            }
            return(null);
        }
Ejemplo n.º 14
0
 internal void FreeReceiveDeSerializer()
 {
     if (ReceiveDeSerializer != null)
     {
         ReceiveDeSerializer.Free();
         ReceiveDeSerializer = null;
     }
     if (ReceiveJsonDeSerializer != null)
     {
         ReceiveJsonDeSerializer.Free();
         ReceiveJsonDeSerializer = null;
     }
 }
Ejemplo n.º 15
0
 internal void FreeReceiveDeSerializer()
 {
     AutoCSer.BinaryDeSerializer deSerializer = Interlocked.Exchange(ref ReceiveDeSerializer, null);
     if (deSerializer != null)
     {
         deSerializer.Free();
     }
     AutoCSer.JsonDeSerializer jsonDeSerializer = Interlocked.Exchange(ref ReceiveJsonDeSerializer, null);
     if (jsonDeSerializer != null)
     {
         jsonDeSerializer.Free();
     }
 }
Ejemplo n.º 16
0
        /// <summary>
        /// 数据反序列化
        /// </summary>
        /// <typeparam name="outputParameterType"></typeparam>
        /// <param name="commandInfo"></param>
        /// <param name="outputParameter"></param>
        /// <param name="clientBuffer"></param>
        private unsafe void deSerialize <outputParameterType>(TcpServer.CommandInfoBase commandInfo, ref outputParameterType outputParameter, ref ClientBuffer clientBuffer)
            where outputParameterType : struct
        {
            if ((commandInfo.CommandFlags & TcpServer.CommandFlags.JsonSerialize) == 0)
            {
                if (commandInfo.SimpleSerializeOutputParamter == 0)
                {
                    if (receiveDeSerializer == null)
                    {
                        receiveDeSerializer = AutoCSer.BinaryDeSerializer.YieldPool.Default.Pop() ?? new AutoCSer.BinaryDeSerializer();
                        receiveDeSerializer.SetTcpServer(AutoCSer.BinaryDeSerializer.DefaultConfig, null);
                    }
                    if (receiveDeSerializer.DeSerializeTcpServer(ref clientBuffer.Data, ref outputParameter))
                    {
                        clientBuffer.ReturnType = TcpServer.ReturnType.Success;
                        return;
                    }
                }
                else
                {
                    fixed(byte *dataFixed = clientBuffer.Data.GetFixedBuffer())
                    {
                        byte *start = dataFixed + clientBuffer.Data.Start, end = start + clientBuffer.Data.Length;

                        if (SimpleSerialize.TypeDeSerializer <outputParameterType> .DeSerialize(start, ref outputParameter, end) == end)
                        {
                            clientBuffer.ReturnType = TcpServer.ReturnType.Success;
                            return;
                        }
                    }
                }
            }
            else
            {
                if (receiveJsonParser == null)
                {
                    receiveJsonParser = AutoCSer.JsonDeSerializer.YieldPool.Default.Pop() ?? new AutoCSer.JsonDeSerializer();
                    receiveJsonParser.SetTcpServer();
                }
                if (receiveJsonParser.DeSerializeTcpServer(ref clientBuffer.Data, ref outputParameter))
                {
                    clientBuffer.ReturnType = TcpServer.ReturnType.Success;
                    return;
                }
            }
            clientBuffer.ReturnType = TcpServer.ReturnType.ClientDeSerializeError;
        }
Ejemplo n.º 17
0
        internal bool DeSerialize <valueType>(ref SubArray <byte> data, ref valueType value)
            where valueType : struct
        {
            AutoCSer.BinaryDeSerializer deSerializer = Interlocked.Exchange(ref ReceiveDeSerializer, null);
            if (deSerializer == null)
            {
                deSerializer = AutoCSer.BinaryDeSerializer.YieldPool.Default.Pop() ?? new AutoCSer.BinaryDeSerializer();
                deSerializer.SetTcpServer(AutoCSer.BinaryDeSerializer.DefaultConfig, null);
            }
            bool isValue = deSerializer.DeSerializeTcpServer(ref data, ref value);

            if (Interlocked.CompareExchange(ref ReceiveDeSerializer, deSerializer, null) != null)
            {
                deSerializer.Free();
            }
            return(isValue);
        }
Ejemplo n.º 18
0
        private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            if (deSerializer.GetBuffer(ref Buffer))
            {
                int size;

                fixed(byte *bufferFixed = Buffer.BufferArray) size = *(int *)(bufferFixed + Buffer.StartIndex);

                if (deSerializer.MoveRead(size))
                {
                    Buffer = Buffer.GetSub(sizeof(int), size - sizeof(int));
                }
            }
            else
            {
                deSerializer.MoveRead(-1);
            }
        }
Ejemplo n.º 19
0
        private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            byte *read = deSerializer.Read;
            int   size = *(int *)read;

            if (size > 0)
            {
                int offset = -(size + sizeof(ushort)) & 3;
                if (deSerializer.MoveReadAny(size + offset + (sizeof(int) + sizeof(ulong) + sizeof(ushort))))
                {
                    Index = *(ulong *)(read + sizeof(int));
                    deSerializer.DeSerializeTcpServer(ref Buffer, read += sizeof(int) + sizeof(ulong), size);
                    BlockIndex = *(ushort *)(read + size);
                }
            }
            else
            {
                deSerializer.State = BinarySerialize.DeSerializeState.IndexOutOfRange;
            }
        }
Ejemplo n.º 20
0
        private static unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer, ref CustomClass value)
        {
            byte *read = deSerializer.CustomRead;

            if (deSerializer.MoveReadAny(sizeof(int)))
            {
                switch (*(int *)read)
                {
                case 1: value = new CustomClass {
                        Value = null
                }; return;

                case 2: value = new CustomClass {
                        Value = string.Empty
                }; return;

                default: deSerializer.MoveRead(-1); return;
                }
            }
        }
Ejemplo n.º 21
0
        private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            if (deSerializer.CheckNullValue() == 0)
            {
                Value = default(valueType);
            }
            else
            {
                MemberMap oldMemberMap = deSerializer.MemberMap;
                deSerializer.MemberMap = MemberMap;
                try
                {
                    if (Value == null)
                    {
                        valueType poolValue = Value = MemberMapValueLinkPool <valueType> .Pop();

                        try
                        {
                            AutoCSer.BinarySerialize.TypeDeSerializer <valueType> .DeSerialize(deSerializer, ref Value);
                        }
                        finally
                        {
                            if (poolValue != null && poolValue != Value)
                            {
                                MemberMapValueLinkPool <valueType> .PushNotNull(poolValue);
                            }
                        }
                    }
                    else
                    {
                        memberMapType parseValue = Value;
                        AutoCSer.BinarySerialize.TypeDeSerializer <memberMapType> .DeSerialize(deSerializer, ref parseValue);
                    }
                }
                finally
                {
                    MemberMap = (MemberMap <memberMapType>)deSerializer.MemberMap;
                    deSerializer.MemberMap = oldMemberMap;
                }
            }
        }
Ejemplo n.º 22
0
 internal void FreeSerializer()
 {
     OutputStream = null;
     if (ReceiveDeSerializer != null)
     {
         ReceiveDeSerializer.Free();
         ReceiveDeSerializer = null;
     }
     if (ReceiveJsonParser != null)
     {
         ReceiveJsonParser.Free();
         ReceiveJsonParser = null;
     }
     if (OutputSerializer != null)
     {
         OutputSerializer.Free();
         OutputSerializer = null;
     }
     if (OutputJsonSerializer != null)
     {
         OutputJsonSerializer.Free();
         OutputJsonSerializer = null;
     }
 }
Ejemplo n.º 23
0
        private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
        {
            byte *read = deSerializer.Read;
            int   size = *(int *)read;

            if (deSerializer.MoveRead(size))
            {
                Identity = new ShortPathIdentity(read + Serializer.HeaderSize);
                int bufferSize = size + Identity.PacketSize - ShortPathIdentity.SerializeSize;
                if (bufferSize >= Serializer.HeaderSize + IndexIdentity.SerializeSize)
                {
                    Buffer = BufferCount.GetBuffer(bufferSize);
                    fixed(byte *bufferFixed = Buffer.GetFixedBuffer())
                    {
                        byte *start = bufferFixed + Buffer.Array.Start;

                        *(int *)start = Buffer.Array.Length;
                        *(uint *)(start + sizeof(int)) = *(uint *)(read + sizeof(int));
                    }

                    deSerializer.CopyTo(read + (Serializer.HeaderSize + ShortPathIdentity.SerializeSize), ref Buffer.Array, Serializer.HeaderSize + Identity.PacketSize);
                }
            }
        }
Ejemplo n.º 24
0
 protected void deSerializeParameterStruct <parameterType>(AutoCSer.BinaryDeSerializer deSerializer, ref parameterType parameter)
 {
     AutoCSer.BinarySerialize.TypeDeSerializer <parameterType> .StructDeSerialize(deSerializer, ref parameter);
 }
Ejemplo n.º 25
0
 private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     Serializer.GetQueryData(deSerializer, ref QueryData);
 }
Ejemplo n.º 26
0
 private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     deSerializeParameter(deSerializer);
     deSerializeParent(deSerializer);
 }
Ejemplo n.º 27
0
 /// <summary>
 /// 服务端反序列化
 /// </summary>
 /// <param name="deSerializer"></param>
 /// <param name="value"></param>
 internal static void DeSerialize(AutoCSer.BinaryDeSerializer deSerializer, out Node value)
 {
     (value = createNodes.Array[deSerializer.ReadInt()]()).deSerialize(deSerializer);
 }
Ejemplo n.º 28
0
 private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     Identity = deSerializer.ReadULong();
     Parameter.DeSerializeReturnParameter(deSerializer);
 }
Ejemplo n.º 29
0
 private unsafe void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     Buffer = Serializer.GetOperationData(deSerializer);
 }
Ejemplo n.º 30
0
 private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer)
 {
     ClientNodeId = deSerializer.ReadInt();
     Node.DeSerialize(deSerializer, out Node);
 }