Преглед изворни кода

整理了MessageSenderStruct跟RpcInfo的代码

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

+ 14 - 9
Unity/Assets/Scripts/Core/Fiber/Module/Actor/MessageSenderStruct.cs

@@ -9,30 +9,30 @@ namespace ET
         public ActorId ActorId { get; }
         
         public IRequest Request { get; }
+        
+        private readonly ETTask<IResponse> tcs;
 
-        private readonly bool IsFromPool;
+        private readonly bool isFromPool;
 
         public bool NeedException { get; }
-
-        private readonly ETTask<IResponse> tcs;
-
-        public MessageSenderStruct(ActorId actorId, IRequest iRequest, ETTask<IResponse> tcs, bool needException)
+        
+        public MessageSenderStruct(ActorId actorId, IRequest iRequest, bool needException)
         {
             this.ActorId = actorId;
             
             this.Request = iRequest;
             MessageObject messageObject = (MessageObject)this.Request;
-            this.IsFromPool = messageObject.IsFromPool;
+            this.isFromPool = messageObject.IsFromPool;
             messageObject.IsFromPool = false;
             
-            this.tcs = tcs;
+            this.tcs = ETTask<IResponse>.Create(true);
             this.NeedException = needException;
         }
         
         public void SetResult(IResponse response)
         {
             MessageObject messageObject = (MessageObject)this.Request;
-            messageObject.IsFromPool = this.IsFromPool;
+            messageObject.IsFromPool = this.isFromPool;
             messageObject.Dispose();
             
             this.tcs.SetResult(response);
@@ -41,10 +41,15 @@ namespace ET
         public void SetException(Exception exception)
         {
             MessageObject messageObject = (MessageObject)this.Request;
-            messageObject.IsFromPool = this.IsFromPool;
+            messageObject.IsFromPool = this.isFromPool;
             messageObject.Dispose();
             
             this.tcs.SetException(exception);
         }
+
+        public async ETTask<IResponse> Wait()
+        {
+            return await this.tcs;
+        }
     }
 }

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

@@ -156,10 +156,9 @@ namespace ET
             {
                 throw new Exception($"actor inner process diff: {actorId.Process} {fiber.Process}");
             }
-            
-            var tcs = ETTask<IResponse>.Create(true);
 
-            self.requestCallback.Add(rpcId, new MessageSenderStruct(actorId, iRequest, tcs, needException));
+            MessageSenderStruct messageSenderStruct = new(actorId, iRequest, needException);
+            self.requestCallback.Add(rpcId, messageSenderStruct);
             
             self.SendInner(actorId, (MessageObject)iRequest);
 
@@ -188,7 +187,7 @@ namespace ET
             
             long beginTime = TimeInfo.Instance.ServerFrameTime();
 
-            IResponse response = await tcs;
+            IResponse response = await messageSenderStruct.Wait();
             
             long endTime = TimeInfo.Instance.ServerFrameTime();
 

+ 3 - 4
Unity/Assets/Scripts/Hotfix/Server/Module/Message/ProcessOuterSenderSystem.cs

@@ -207,9 +207,8 @@ namespace ET.Server
 
             iRequest.RpcId = rpcId;
 
-            var tcs = ETTask<IResponse>.Create(true);
-
-            self.requestCallback.Add(rpcId, new MessageSenderStruct(actorId, iRequest, tcs, needException));
+            MessageSenderStruct messageSenderStruct = new(actorId, iRequest, needException);
+            self.requestCallback.Add(rpcId, messageSenderStruct);
             
             self.SendInner(actorId, iRequest as MessageObject);
 
@@ -236,7 +235,7 @@ namespace ET.Server
 
             long beginTime = TimeInfo.Instance.ServerFrameTime();
 
-            IResponse response = await tcs;
+            IResponse response = await messageSenderStruct.Wait();
 
             long endTime = TimeInfo.Instance.ServerFrameTime();
 

+ 7 - 6
Unity/Assets/Scripts/Model/Share/Module/Message/Session.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
 using System.Net;
 
@@ -8,16 +7,18 @@ namespace ET
 {
     public readonly struct RpcInfo
     {
-        public readonly bool IsFromPool;
-        public readonly IRequest Request { get; }
+        public IRequest Request { get; }
+        
         private readonly ETTask<IResponse> tcs;
 
+        private readonly bool isFromPool;
+
         public RpcInfo(IRequest request)
         {
             this.Request = request;
             
             MessageObject messageObject = (MessageObject)this.Request;
-            this.IsFromPool = messageObject.IsFromPool;
+            this.isFromPool = messageObject.IsFromPool;
             messageObject.IsFromPool = false;
 
             this.tcs = ETTask<IResponse>.Create(true);
@@ -26,7 +27,7 @@ namespace ET
         public void SetResult(IResponse response)
         {
             MessageObject messageObject = (MessageObject)this.Request;
-            messageObject.IsFromPool = this.IsFromPool;
+            messageObject.IsFromPool = this.isFromPool;
             messageObject.Dispose();
 
             this.tcs.SetResult(response);
@@ -35,7 +36,7 @@ namespace ET
         public void SetException(Exception exception)
         {
             MessageObject messageObject = (MessageObject)this.Request;
-            messageObject.IsFromPool = this.IsFromPool;
+            messageObject.IsFromPool = this.isFromPool;
             messageObject.Dispose();
 
             this.tcs.SetException(exception);