예제 #1
0
        public List <STest> BinaryFormatterDeserializerFromStream()
        {
            List <STest> data = null;

            for (var i = 0; i < N; i++)
            {
                _binSerializerStream.Position = 0;
                data = _binSerializer.Deserialize <List <STest> >(_binSerializerStream);
            }
            return(data);
        }
        private List <T> Deserialize(GenericState state)
        {
            List <T> generics = new List <T>();

            while (state.Position < state.Buffer.Size)
            {
                if (state.Position + HeaderSize > state.Buffer.Size)
                {
                    break;
                }

                int length;
                if (state.ReadLength)
                {
                    length = state.Length;
                }
                else
                {
                    state.Buffer.Position = state.Position;
                    length           = state.Buffer.ReadInt32();
                    state.Position  += HeaderSize;
                    state.Length     = length;
                    state.ReadLength = true;
                }

                if (state.Position + length > state.Buffer.Size)
                {
                    break;
                }

                state.Buffer.Position = state.Position;
                byte[] messageBytes = state.Buffer.ReadBytes(length);
                T      generic      = _serializer.Deserialize(messageBytes);
                generics.Add(generic);
                state.Position  += length;
                state.Length     = 0;
                state.ReadLength = false;
            }

            return(generics);
        }
        private void SocketOnReceivedPacket(object sender, ReceivedUdpPacketEventArgs eventArgs)
        {
            Message message = _serializer.Deserialize(eventArgs.Received);

            HandleMessage(eventArgs.RemoteIpEndPoint, message);
        }