tanghai пре 2 година
родитељ
комит
2ec572895e

+ 4 - 19
Unity/Assets/Scripts/Core/Fiber/Module/Actor/ProcessInnerSenderSystem.cs

@@ -115,7 +115,7 @@ namespace ET
             return MessageQueue.Instance.Send(fiber.Address, actorId, message);
         }
 
-        public static int GetRpcId(this ProcessInnerSender self)
+        private static int GetRpcId(this ProcessInnerSender self)
         {
             return ++self.RpcId;
         }
@@ -134,34 +134,19 @@ namespace ET
             {
                 throw new Exception($"actor id is 0: {request}");
             }
-
-            return await self.Call(actorId, rpcId, request, needException);
-        }
-        
-        public static async ETTask<IResponse> Call(
-                this ProcessInnerSender self,
-                ActorId actorId,
-                int rpcId,
-                IRequest iRequest,
-                bool needException = true
-        )
-        {
-            if (actorId == default)
-            {
-                throw new Exception($"actor id is 0: {iRequest}");
-            }
+            
             Fiber fiber = self.Fiber();
             if (fiber.Process != actorId.Process)
             {
                 throw new Exception($"actor inner process diff: {actorId.Process} {fiber.Process}");
             }
 
-            Type requestType = iRequest.GetType();
+            Type requestType = request.GetType();
             MessageSenderStruct messageSenderStruct = new(actorId, requestType, needException);
             self.requestCallback.Add(rpcId, messageSenderStruct);
 
             IResponse response;
-            if (!self.SendInner(actorId, (MessageObject)iRequest))  // 纤程不存在
+            if (!self.SendInner(actorId, (MessageObject)request))  // 纤程不存在
             {
                 response = MessageHelper.CreateResponse(requestType, rpcId, ErrorCore.ERR_NotFoundActor);
                 return response;

+ 6 - 9
Unity/Assets/Scripts/Hotfix/Server/Module/ActorLocation/MessageLocationSenderComponentSystem.cs

@@ -182,10 +182,7 @@ namespace ET.Server
             MessageLocationSender messageLocationSender = self.GetOrCreate(entityId);
 
             Scene root = self.Root();
-            
-            int rpcId = root.GetComponent<MessageSender>().GetRpcId();
-            iRequest.RpcId = rpcId;
-            
+            Type iRequestType = iRequest.GetType();
             long actorLocationSenderInstanceId = messageLocationSender.InstanceId;
             int coroutineLockType = (self.LocationType << 16) | CoroutineLockType.MessageLocationSender;
             using (await root.GetComponent<CoroutineLockComponent>().Wait(coroutineLockType, entityId))
@@ -197,7 +194,7 @@ namespace ET.Server
 
                 try
                 {
-                    return await self.CallInner(messageLocationSender, rpcId, iRequest);
+                    return await self.CallInner(messageLocationSender, iRequest);
                 }
                 catch (RpcException)
                 {
@@ -207,12 +204,12 @@ namespace ET.Server
                 catch (Exception e)
                 {
                     self.Remove(messageLocationSender.Id);
-                    throw new Exception($"{iRequest}", e);
+                    throw new Exception($"{iRequestType.FullName}", e);
                 }
             }
         }
 
-        private static async ETTask<IResponse> CallInner(this MessageLocationSenderOneType self, MessageLocationSender messageLocationSender, int rpcId, IRequest iRequest)
+        private static async ETTask<IResponse> CallInner(this MessageLocationSenderOneType self, MessageLocationSender messageLocationSender, IRequest iRequest)
         {
             int failTimes = 0;
             long instanceId = messageLocationSender.InstanceId;
@@ -234,9 +231,9 @@ namespace ET.Server
 
                 if (messageLocationSender.ActorId == default)
                 {
-                    return MessageHelper.CreateResponse(requestType, rpcId, ErrorCore.ERR_NotFoundActor);
+                    return MessageHelper.CreateResponse(requestType, 0, ErrorCore.ERR_NotFoundActor);
                 }
-                IResponse response = await root.GetComponent<MessageSender>().Call(messageLocationSender.ActorId, rpcId, iRequest, needException: false);
+                IResponse response = await root.GetComponent<MessageSender>().Call(messageLocationSender.ActorId, iRequest, needException: false);
                 
                 if (messageLocationSender.InstanceId != instanceId)
                 {

+ 14 - 30
Unity/Assets/Scripts/Hotfix/Server/Module/Message/MessageSenderSystem.cs

@@ -27,7 +27,7 @@ namespace ET.Server
             MessageQueue.Instance.Send(new ActorId(fiber.Process, ConstFiberId.NetInner), a2NetInnerMessage);
         }
 
-        public static int GetRpcId(this MessageSender self)
+        private static int GetRpcId(this MessageSender self)
         {
             return ++self.RpcId;
         }
@@ -38,45 +38,29 @@ namespace ET.Server
                 IRequest request,
                 bool needException = true
         )
-        {
-            int rpcId = self.GetRpcId();
-            request.RpcId = rpcId;
-            
-            if (actorId == default)
-            {
-                throw new Exception($"actor id is 0: {request}");
-            }
-
-            return await self.Call(actorId, rpcId, request, needException);
-        }
-        
-        public static async ETTask<IResponse> Call(
-                this MessageSender self,
-                ActorId actorId,
-                int rpcId,
-                IRequest request,
-                bool needException = true
-        )
         {
             if (actorId == default)
             {
                 throw new Exception($"actor id is 0: {request}");
             }
             Fiber fiber = self.Fiber();
-            
+
+            IResponse response;
             if (fiber.Process == actorId.Process)
             {
-                return await fiber.Root.GetComponent<ProcessInnerSender>().Call(actorId, rpcId, request, needException: needException);
+                response = await fiber.Root.GetComponent<ProcessInnerSender>().Call(actorId, request, needException: needException);
             }
-
-            // 发给NetInner纤程
-            A2NetInner_Request a2NetInner_Request = A2NetInner_Request.Create();
-            a2NetInner_Request.ActorId = actorId;
-            a2NetInner_Request.MessageObject = request;
+            else
+            {
+                // 发给NetInner纤程
+                A2NetInner_Request a2NetInner_Request = A2NetInner_Request.Create();
+                a2NetInner_Request.ActorId = actorId;
+                a2NetInner_Request.MessageObject = request;
             
-            using A2NetInner_Response a2NetInnerResponse = await fiber.Root.GetComponent<ProcessInnerSender>().Call(
-                new ActorId(fiber.Process, ConstFiberId.NetInner), a2NetInner_Request) as A2NetInner_Response;
-            IResponse response = a2NetInnerResponse.MessageObject;
+                using A2NetInner_Response a2NetInnerResponse = await fiber.Root.GetComponent<ProcessInnerSender>().Call(
+                    new ActorId(fiber.Process, ConstFiberId.NetInner), a2NetInner_Request) as A2NetInner_Response;
+                response = a2NetInnerResponse.MessageObject;
+            }
             
             if (response.Error == ErrorCore.ERR_MessageTimeout)
             {