public void TestSerializeDeserializeVesselUpdateMsg() { var msgData = Factory.CreateNewMessageData <VesselUpdateMsgData>(); msgData.VesselId = Guid.NewGuid(); msgData.Name = "Name"; msgData.Type = "Type"; msgData.DistanceTraveled = 222; msgData.Situation = "Situation"; msgData.Landed = true; msgData.LandedAt = "LandedAt"; msgData.DisplayLandedAt = "DisplayLandedAt"; msgData.Splashed = false; msgData.MissionTime = Rnd.NextDouble(); msgData.LaunchTime = Rnd.NextDouble(); msgData.LastUt = Rnd.NextDouble(); msgData.Persistent = false; msgData.RefTransformId = (uint)Rnd.Next(); for (var i = 0; i < 17; i++) { if (msgData.ActionGroups[i] == null) { msgData.ActionGroups[i] = new ActionGroup(); } msgData.ActionGroups[i].ActionGroupName = "ActionGroupName" + i; msgData.ActionGroups[i].State = true; msgData.ActionGroups[i].Time = Rnd.NextDouble(); } var msg = Factory.CreateNew <VesselCliMsg>(msgData); //Serialize var expectedDataSize = msg.GetMessageSize(); var lidgrenMsgSend = Client.CreateMessage(expectedDataSize); msg.Serialize(lidgrenMsgSend); var realSize = lidgrenMsgSend.LengthBytes; //Usually the expected size will be a bit more as Lidgren writes the size of the strings in a base128 int (so it uses less bytes) Assert.IsTrue(expectedDataSize >= realSize); //Simulate sending var data = lidgrenMsgSend.ReadBytes(lidgrenMsgSend.LengthBytes); var lidgrenMsgRecv = Client.CreateIncomingMessage(NetIncomingMessageType.Data, data); lidgrenMsgRecv.LengthBytes = lidgrenMsgSend.LengthBytes; msg.Recycle(); //Deserialize var msgDes = Factory.Deserialize(lidgrenMsgRecv, Environment.TickCount); }
private static void Test2() { var facS = new ServerMessageFactory(true); var bytes = new byte[10000]; new Random().NextBytes(bytes); var msg = facS.CreateNew <VesselSrvMsg>(new VesselProtoMsgData { VesselId = Guid.NewGuid(), VesselData = bytes, SentTime = DateTime.UtcNow.Ticks }); //Serialize and compress var serialized = msg.Serialize(true); serialized = msg.Serialize(true); serialized = msg.Serialize(true); serialized = msg.Serialize(true); //Serialize no compress var serializedNc = msg.Serialize(false); serializedNc = msg.Serialize(false); serializedNc = msg.Serialize(false); serializedNc = msg.Serialize(false); var msg2 = facS.Deserialize(serialized, Environment.TickCount); msg2 = facS.Deserialize(serialized, Environment.TickCount); msg2 = facS.Deserialize(serialized, Environment.TickCount); msg2 = facS.Deserialize(serialized, Environment.TickCount); var msg2Nc = facS.Deserialize(serializedNc, Environment.TickCount); msg2Nc = facS.Deserialize(serializedNc, Environment.TickCount); msg2Nc = facS.Deserialize(serializedNc, Environment.TickCount); msg2Nc = facS.Deserialize(serializedNc, Environment.TickCount); var ok = ((VesselProtoMsgData)msg.Data).VesselData.SequenceEqual(((VesselProtoMsgData)msg2.Data).VesselData) && ((VesselProtoMsgData)msg2Nc.Data).VesselData.SequenceEqual(((VesselProtoMsgData)msg2.Data).VesselData); }