tanghai 7 лет назад
Родитель
Сommit
d6e35fa5ef

+ 1 - 1
Server/Hotfix/Module/Message/InnerMessageDispatcher.cs

@@ -7,7 +7,7 @@ namespace ETHotfix
 	{
 		public void Dispatch(Session session, Packet packet)
 		{
-			ushort opcode = packet.Opcode();
+			ushort opcode = packet.Opcode;
 			Type messageType = Game.Scene.GetComponent<OpcodeTypeComponent>().GetType(opcode);
 			IMessage message = (IMessage)session.Network.MessagePacker.DeserializeFrom(messageType, packet.Bytes, Packet.Index, packet.Length - Packet.Index);
 			

+ 1 - 1
Server/Hotfix/Module/Message/OuterMessageDispatcher.cs

@@ -7,7 +7,7 @@ namespace ETHotfix
 	{
 		public async void Dispatch(Session session, Packet packet)
 		{
-			ushort opcode = packet.Opcode();
+			ushort opcode = packet.Opcode;
 			Type messageType = session.Network.Entity.GetComponent<OpcodeTypeComponent>().GetType(opcode);
 			object message = session.Network.MessagePacker.DeserializeFrom(messageType, packet.Bytes, Packet.Index, packet.Length - Packet.Index);
 

+ 1 - 1
Unity/Assets/Scripts/Module/Message/ClientDispatcher.cs

@@ -6,7 +6,7 @@ namespace ETModel
 	{
 		public void Dispatch(Session session, Packet packet)
 		{
-			ushort opcode = packet.Opcode();
+			ushort opcode = packet.Opcode;
 			
 			if (OpcodeHelper.IsClientHotfixMessage(opcode))
 			{

+ 6 - 12
Unity/Assets/Scripts/Module/Message/Network/TCP/PacketParser.cs

@@ -8,7 +8,7 @@ namespace ETModel
 		PacketBody
 	}
 	
-	public struct Packet
+	public class Packet
 	{
 		public const int MinSize = 2;
 		public const int FlagIndex = 0;
@@ -20,6 +20,8 @@ namespace ETModel
 		/// </summary>
 		public byte[] Bytes { get; }
 		public ushort Length { get; set; }
+		public byte Flag { get; set; }
+		public ushort Opcode { get; set; }
 
 		public Packet(int length)
 		{
@@ -32,16 +34,6 @@ namespace ETModel
 			this.Bytes = bytes;
 			this.Length = (ushort)bytes.Length;
 		}
-
-		public byte Flag()
-		{
-			return this.Bytes[0];
-		}
-		
-		public ushort Opcode()
-		{
-			return BitConverter.ToUInt16(this.Bytes, OpcodeIndex);
-		}
 	}
 
 	internal class PacketParser
@@ -50,7 +42,7 @@ namespace ETModel
 
 		private ushort packetSize;
 		private ParserState state;
-		private Packet packet = new Packet(ushort.MaxValue);
+		private readonly Packet packet = new Packet(ushort.MaxValue);
 		private bool isOK;
 
 		public PacketParser(CircularBuffer buffer)
@@ -95,6 +87,8 @@ namespace ETModel
 						{
 							this.buffer.Read(this.packet.Bytes, 0, this.packetSize);
 							this.packet.Length = this.packetSize;
+							this.packet.Flag = this.packet.Bytes[0];
+							this.packet.Opcode = BitConverter.ToUInt16(this.packet.Bytes, Packet.OpcodeIndex);
 							this.isOK = true;
 							this.state = ParserState.PacketSize;
 							finish = true;

+ 5 - 3
Unity/Assets/Scripts/Module/Message/Session.cs

@@ -138,8 +138,8 @@ namespace ETModel
 				return;
 			}
 
-			byte flag = packet.Flag();
-			ushort opcode = packet.Opcode();
+			byte flag = packet.Flag;
+			ushort opcode = packet.Opcode;
 
 #if !SERVER
 			if (OpcodeHelper.IsClientHotfixMessage(opcode))
@@ -280,6 +280,8 @@ namespace ETModel
 				}
 
 				this.pkt.Length = index;
+				this.pkt.Flag = flag;
+				this.pkt.Opcode = opcode;
 				session.Run(this.pkt);
 				return;
 			}
@@ -289,7 +291,7 @@ namespace ETModel
 		}
 
 #if SERVER
-		private Packet pkt = new Packet(ushort.MaxValue);
+		private readonly Packet pkt = new Packet(ushort.MaxValue);
 #endif
 	}
 }

+ 2 - 2
Unity/Assets/ThirdParty/ILRuntime/Generated/CLRBindings.cs

@@ -73,13 +73,14 @@ namespace ILRuntime.Runtime.Generated
             ETModel_EventSystem_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_Type_Queue_1_ILTypeInstance_Binding.Register(app);
             System_Collections_Generic_Queue_1_ILTypeInstance_Binding.Register(app);
+            ETModel_SessionCallbackComponent_Binding.Register(app);
+            ETModel_Component_Binding.Register(app);
             ETModel_Packet_Binding.Register(app);
             ETModel_ProtobufHelper_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_Int32_Action_1_ILTypeInstance_Binding.Register(app);
             ETModel_MessageInfo_Binding.Register(app);
             System_Threading_Tasks_TaskCompletionSource_1_ILTypeInstance_Binding.Register(app);
             System_Threading_CancellationToken_Binding.Register(app);
-            ETModel_SessionCallbackComponent_Binding.Register(app);
             ETModel_RpcException_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_UInt16_List_1_ILTypeInstance_Binding.Register(app);
             ETModel_OpcodeTypeComponent_Binding.Register(app);
@@ -94,7 +95,6 @@ namespace ILRuntime.Runtime.Generated
             ETModel_CanvasConfig_Binding.Register(app);
             UnityEngine_Transform_Binding.Register(app);
             System_Collections_Generic_List_1_String_Binding.Register(app);
-            ETModel_Component_Binding.Register(app);
             ETModel_Scene_Binding.Register(app);
             UnityEngine_Object_Binding.Register(app);
             System_Collections_Generic_Dictionary_2_String_ILTypeInstance_Binding_ValueCollection_Binding.Register(app);

+ 12 - 67
Unity/Assets/ThirdParty/ILRuntime/Generated/ETModel_Packet_Binding.cs

@@ -22,11 +22,11 @@ namespace ILRuntime.Runtime.Generated
             Type[] args;
             Type type = typeof(ETModel.Packet);
             args = new Type[]{};
-            method = type.GetMethod("Opcode", flag, null, args, null);
-            app.RegisterCLRMethodRedirection(method, Opcode_0);
+            method = type.GetMethod("get_Opcode", flag, null, args, null);
+            app.RegisterCLRMethodRedirection(method, get_Opcode_0);
             args = new Type[]{};
-            method = type.GetMethod("Flag", flag, null, args, null);
-            app.RegisterCLRMethodRedirection(method, Flag_1);
+            method = type.GetMethod("get_Flag", flag, null, args, null);
+            app.RegisterCLRMethodRedirection(method, get_Flag_1);
             args = new Type[]{};
             method = type.GetMethod("get_Bytes", flag, null, args, null);
             app.RegisterCLRMethodRedirection(method, get_Bytes_2);
@@ -34,89 +34,38 @@ namespace ILRuntime.Runtime.Generated
             method = type.GetMethod("get_Length", flag, null, args, null);
             app.RegisterCLRMethodRedirection(method, get_Length_3);
 
-            app.RegisterCLRCreateDefaultInstance(type, () => new ETModel.Packet());
-
 
         }
 
-        static void WriteBackInstance(ILRuntime.Runtime.Enviorment.AppDomain __domain, StackObject* ptr_of_this_method, IList<object> __mStack, ref ETModel.Packet instance_of_this_method)
-        {
-            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
-            switch(ptr_of_this_method->ObjectType)
-            {
-                case ObjectTypes.Object:
-                    {
-                        __mStack[ptr_of_this_method->Value] = instance_of_this_method;
-                    }
-                    break;
-                case ObjectTypes.FieldReference:
-                    {
-                        var ___obj = __mStack[ptr_of_this_method->Value];
-                        if(___obj is ILTypeInstance)
-                        {
-                            ((ILTypeInstance)___obj)[ptr_of_this_method->ValueLow] = instance_of_this_method;
-                        }
-                        else
-                        {
-                            var t = __domain.GetType(___obj.GetType()) as CLRType;
-                            t.SetFieldValue(ptr_of_this_method->ValueLow, ref ___obj, instance_of_this_method);
-                        }
-                    }
-                    break;
-                case ObjectTypes.StaticFieldReference:
-                    {
-                        var t = __domain.GetType(ptr_of_this_method->Value);
-                        if(t is ILType)
-                        {
-                            ((ILType)t).StaticInstance[ptr_of_this_method->ValueLow] = instance_of_this_method;
-                        }
-                        else
-                        {
-                            ((CLRType)t).SetStaticFieldValue(ptr_of_this_method->ValueLow, instance_of_this_method);
-                        }
-                    }
-                    break;
-                 case ObjectTypes.ArrayReference:
-                    {
-                        var instance_of_arrayReference = __mStack[ptr_of_this_method->Value] as ETModel.Packet[];
-                        instance_of_arrayReference[ptr_of_this_method->ValueLow] = instance_of_this_method;
-                    }
-                    break;
-            }
-        }
 
-        static StackObject* Opcode_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
+        static StackObject* get_Opcode_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
         {
             ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
             StackObject* ptr_of_this_method;
             StackObject* __ret = ILIntepreter.Minus(__esp, 1);
 
             ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
             ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+            __intp.Free(ptr_of_this_method);
 
-            var result_of_this_method = instance_of_this_method.Opcode();
-
-            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
+            var result_of_this_method = instance_of_this_method.Opcode;
 
             __ret->ObjectType = ObjectTypes.Integer;
             __ret->Value = result_of_this_method;
             return __ret + 1;
         }
 
-        static StackObject* Flag_1(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
+        static StackObject* get_Flag_1(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
         {
             ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
             StackObject* ptr_of_this_method;
             StackObject* __ret = ILIntepreter.Minus(__esp, 1);
 
             ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
             ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+            __intp.Free(ptr_of_this_method);
 
-            var result_of_this_method = instance_of_this_method.Flag();
-
-            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
+            var result_of_this_method = instance_of_this_method.Flag;
 
             __ret->ObjectType = ObjectTypes.Integer;
             __ret->Value = result_of_this_method;
@@ -130,13 +79,11 @@ namespace ILRuntime.Runtime.Generated
             StackObject* __ret = ILIntepreter.Minus(__esp, 1);
 
             ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
             ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+            __intp.Free(ptr_of_this_method);
 
             var result_of_this_method = instance_of_this_method.Bytes;
 
-            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
-
             return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
         }
 
@@ -147,13 +94,11 @@ namespace ILRuntime.Runtime.Generated
             StackObject* __ret = ILIntepreter.Minus(__esp, 1);
 
             ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
-            ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
             ETModel.Packet instance_of_this_method = (ETModel.Packet)typeof(ETModel.Packet).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
+            __intp.Free(ptr_of_this_method);
 
             var result_of_this_method = instance_of_this_method.Length;
 
-            WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
-
             __ret->ObjectType = ObjectTypes.Integer;
             __ret->Value = result_of_this_method;
             return __ret + 1;

+ 2 - 2
Unity/Hotfix/Module/Message/Session.cs

@@ -42,8 +42,8 @@ namespace ETHotfix
 
 		public void Run(ETModel.Session s, Packet p)
 		{
-			ushort opcode = p.Opcode();
-			byte flag = p.Flag();
+			ushort opcode = p.Opcode;
+			byte flag = p.Flag;
 
 			OpcodeTypeComponent opcodeTypeComponent = Game.Scene.GetComponent<OpcodeTypeComponent>();
 			Type responseType = opcodeTypeComponent.GetType(opcode);