Exemple #1
0
        public ServerMsgFinish(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Frames = MsgSerializer.ReadUInt32Array(buffer, ref offset);
            Hashes = MsgSerializer.ReadInt32Array(buffer, ref offset);
        }
Exemple #2
0
        public void ReceiveMessages()
        {
            while (_socket.Available > 0)
            {
                var size = Math.Min(_buffer.Length - _received, _socket.Available);

                _received += _socket.Receive(_buffer, _received, size, SocketFlags.None);

                var offset = 0;
                while (MsgSerializer.CheckBufferForMsg(_buffer, _received, offset, out var msgSize, out var msgId))
                {
                    ReadMsg(msgId, _buffer, offset);
                    offset += msgSize;
                    _receiveTimer.Restart();
                }

                Array.Copy(_buffer, offset, _buffer, 0, _received - offset);
                _received -= offset;

                if (_received >= _buffer.Length)
                {
                    throw new MsgPipeException("Failed to receive message: buffer too small");
                }
            }
        }
Exemple #3
0
        public void SerializeTextPositionCommand(byte[] data, string expected)
        {
            var decoded = Encoders.InternationalSystem.Decode(data);
            var actual  = MsgSerializer.SerializeText(decoded);

            Assert.Equal(expected, actual);
        }
Exemple #4
0
        private void ConvertMsgToXml(Stream inStream, Stream outStream, IMessageEncoder encoder)
        {
            var root     = MsgSerializer.SerializeXEntries(Msg.Read(inStream), encoder, true);
            var document = new XDocument(root);

            document.Save(outStream);
        }
Exemple #5
0
        public void TestMsgSerializerFactory()
        {
            var mc = new MyClass
            {
                Age       = 99,
                FirstName = "hoge",
                LastName  = "huga",
            };

            MsgSerializerFactory.Instance().Set(1, typeof(MyClass));

            var stream     = new MemoryStream();
            var serializer = MsgSerializerFactory.Instance().Get(1);

            serializer.Pack(stream, mc);

            uint msgPackLen = (uint)stream.Position;

            stream.Position = 0;

            uint msgLen = 0;

            MsgSerializer.ReadUInt32(stream, out msgLen);
            Assert.IsTrue(msgPackLen == msgLen);

            uint msgType = 0;

            MsgSerializer.ReadUInt32(stream, out msgType);
            Assert.IsTrue(msgType == 1);

            var mc2 = (MyClass)serializer.Unpack(stream);

            Assert.IsTrue(mc2.LastName == mc.LastName);
        }
Exemple #6
0
        public ClientMsgInputs(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Frame     = MsgSerializer.ReadUInt32(buffer, ref offset);
            InputMask = MsgSerializer.ReadUInt64(buffer, ref offset);
        }
Exemple #7
0
 public void ShouldThrowOnVeryLongInt32Array()
 {
     Assert.Throws <OverflowException>(() => {
         var longArray = Enumerable.Repeat(16, MsgSerializer.MaxArrayLength + 1).ToArray();
         MsgSerializer.WriteInt32Array(longArray, Array.Empty <byte>(), 0);
     });
 }
        public void DeserializeNewLine()
        {
            var commands = MsgSerializer.DeserializeText("hello\nworld!").ToArray();

            Assert.Equal(MessageCommand.PrintText, commands[0].Command);
            Assert.Equal("hello\nworld!", commands[0].Text);
        }
Exemple #9
0
        public void SerializeTextUnknown(byte[] data, string expected)
        {
            var commands = Encoders.InternationalSystem.Decode(data);
            var actual   = MsgSerializer.SerializeText(commands);

            Assert.Equal(expected, actual);
        }
Exemple #10
0
 public void ShouldThrowOnVeryLongString()
 {
     Assert.Throws <OverflowException>(() => {
         const int size = MsgSerializer.MaxStringLength;
         MsgSerializer.WriteString(new string('A', size + 1), new byte[size + 2], 0);
     });
 }
Exemple #11
0
        public void DeserializeTextUnknown(string text, byte[] expected)
        {
            var commands = MsgSerializer.DeserializeText(text);
            var actual   = Encoders.InternationalSystem.Encode(commands.ToList());

            Assert.Equal(expected, actual);
        }
Exemple #12
0
        public void SerializePlainComplexText()
        {
            var entries = new[]
            {
                new MessageCommandModel
                {
                    Command = MessageCommand.PrintText,
                    Text    = "Hey "
                },
                new MessageCommandModel
                {
                    Command = MessageCommand.PrintComplex,
                    Text    = "VII"
                },
                new MessageCommandModel
                {
                    Command = MessageCommand.PrintText,
                    Text    = " complex!"
                },
                new MessageCommandModel
                {
                    Command = MessageCommand.NewLine,
                    Text    = " complex!"
                },
            };

            var element = MsgSerializer.SerializeText(entries);

            Assert.Equal("Hey {VII} complex!\n", element);
        }
Exemple #13
0
        public ClientMsgFinished(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Frame     = MsgSerializer.ReadUInt32(buffer, ref offset);
            StateHash = MsgSerializer.ReadInt32(buffer, ref offset);
        }
Exemple #14
0
 public int GetSerializedSize()
 {
     return(MsgSerializer.HeaderLength +
            MsgSerializer.SizeOf(Frame) +
            MsgSerializer.SizeOf(InputMask) +
            MsgSerializer.SizeOf(PlayerIndex));
 }
Exemple #15
0
        public void DeserializeTextPositionCommand(byte[] expected, string text)
        {
            var commands = MsgSerializer.DeserializeText(text).ToList();
            var actual   = Encoders.InternationalSystem.Encode(commands);

            Assert.Equal(expected, actual);
        }
Exemple #16
0
 public int GetSerializedSize()
 {
     return(MsgSerializer.HeaderLength +
            MsgSerializer.SizeOf(Game) +
            MsgSerializer.SizeOf(Version) +
            MsgSerializer.SizeOf(PlayerName));
 }
Exemple #17
0
        public void TestMsgSerializer()
        {
            var mc = new MyClass
            {
                Age       = 99,
                FirstName = "hoge",
                LastName  = "huga",
            };

            var stream     = new MemoryStream();
            var serializer = new MsgSerializer(typeof(MyClass), 1);

            serializer.Pack(stream, mc);

            stream.Position = 0;

            uint msgLen = 0;

            MsgSerializer.ReadUInt32(stream, out msgLen);

            uint msgType = 0;

            MsgSerializer.ReadUInt32(stream, out msgType);
            Assert.IsTrue(msgType == 1);

            var mc2 = (MyClass)serializer.Unpack(stream);

            Assert.IsTrue(mc2.LastName == mc.LastName);
        }
Exemple #18
0
 public int GetSerializedSize()
 {
     return(MsgSerializer.HeaderLength +
            MsgSerializer.SizeOf(Seed) +
            MsgSerializer.SizeOf(Players) +
            MsgSerializer.SizeOf(YourIndex) +
            MsgSerializer.SizeOf(TicksPerSecond));
 }
Exemple #19
0
        public ClientMsgJoin(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Game       = MsgSerializer.ReadString(buffer, ref offset);
            Version    = MsgSerializer.ReadUInt16(buffer, ref offset);
            PlayerName = MsgSerializer.ReadString(buffer, ref offset);
        }
Exemple #20
0
        public ServerMsgInput(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Frame       = MsgSerializer.ReadUInt32(buffer, ref offset);
            InputMask   = MsgSerializer.ReadUInt64(buffer, ref offset);
            PlayerIndex = MsgSerializer.ReadByte(buffer, ref offset);
        }
Exemple #21
0
        public ServerMsgStart(byte[] buffer, int offset)
        {
            MsgSerializer.ValidateHeader(buffer, MsgId, ref offset);

            Seed           = MsgSerializer.ReadInt32(buffer, ref offset);
            Players        = MsgSerializer.ReadStringArray(buffer, ref offset);
            YourIndex      = MsgSerializer.ReadByte(buffer, ref offset);
            TicksPerSecond = MsgSerializer.ReadByte(buffer, ref offset);
        }
Exemple #22
0
        public void DeserializePlainText(string value, byte[] expected)
        {
            var entries = MsgSerializer.DeserializeText(value);

            using (var stream = new MemoryStream())
            {
                var actual = Encoders.InternationalSystem.Encode(entries.ToList());
                Assert.Equal(expected, actual);
            }
        }
Exemple #23
0
        public int WriteTo(byte[] buffer, int offset)
        {
            var dataOffset = offset + MsgSerializer.HeaderLength;
            var written    = 0;

            written += MsgSerializer.WriteByte((byte)ErrorId, buffer, dataOffset);
            written += MsgSerializer.WriteHeader(written, MsgId, buffer, offset);

            return(written);
        }
Exemple #24
0
        public void DeserializeTabulation()
        {
            var commands = MsgSerializer.DeserializeText("hello\tworld!").ToArray();

            Assert.Equal(MessageCommand.PrintText, commands[0].Command);
            Assert.Equal("hello", commands[0].Text);
            Assert.Equal(MessageCommand.Tabulation, commands[1].Command);
            Assert.Equal(MessageCommand.PrintText, commands[2].Command);
            Assert.Equal("world!", commands[2].Text);
        }
Exemple #25
0
        public void SetMessage(ushort id, string text)
        {
            var message = _messages?.FirstOrDefault(x => x.Id == (id & 0x7fff));

            if (message == null)
            {
                return;
            }

            message.Data = Encoders.InternationalSystem.Encode(MsgSerializer.DeserializeText(text).ToList());
        }
Exemple #26
0
        public void ShouldSerializeAndDeserializeString(string value)
        {
            var buf = new byte[MsgSerializer.SizeOf(value)];

            MsgSerializer.WriteString(value, buf, 0);

            var offset       = 0;
            var deserialized = MsgSerializer.ReadString(buf, ref offset);

            Assert.True(value == deserialized, $"'{value}' != '{deserialized}'");
        }
Exemple #27
0
        public int WriteTo(byte[] buffer, int offset)
        {
            var dataOffset = offset + MsgSerializer.HeaderLength;
            var written    = 0;

            written += MsgSerializer.WriteUInt32(Frame, buffer, dataOffset);
            written += MsgSerializer.WriteUInt64(InputMask, buffer, dataOffset + written);
            written += MsgSerializer.WriteHeader(written, MsgId, buffer, offset);

            return(written);
        }
Exemple #28
0
    public void SendToServer(NetMsg msg)
    {
        byte[] buffer = MsgSerializer.SerializeObject(msg, MSG_BYTE_SIZE);

        NetworkTransport.Send(_hostId, _connectionId, _reliableChannel, buffer, MSG_BYTE_SIZE, out _error);

        if (_error != 0)
        {
            Debug.Log((NetworkError)_error);
        }
    }
Exemple #29
0
        public int WriteTo(byte[] buffer, int offset)
        {
            var dataOffset = offset + MsgSerializer.HeaderLength;
            var written    = 0;

            written += MsgSerializer.WriteUInt32Array(Frames, buffer, dataOffset);
            written += MsgSerializer.WriteInt32Array(Hashes, buffer, dataOffset + written);
            written += MsgSerializer.WriteHeader(written, MsgId, buffer, offset);

            return(written);
        }
Exemple #30
0
        public void SerializePlainSimpleText()
        {
            var entry = new MessageCommandModel
            {
                Command = MessageCommand.PrintText,
                Text    = "Hello world!"
            };

            var element = MsgSerializer.SerializeText(new[] { entry });

            Assert.Equal(entry.Text, element);
        }