Răsfoiți Sursa

ETTask把传ETCancelToken改成直接传一个object类型的上下文,这样具体传什么可以使用者自己控制

tanghai 1 an în urmă
părinte
comite
7033448098

+ 8 - 8
Unity/Packages/cn.etetet.core/Runtime/ETTask/AsyncETTaskMethodBuilder.cs

@@ -68,14 +68,14 @@ namespace ET
                 return;
             }
 
-            if (this.tcs.TaskType == TaskType.WithToken)
+            if (this.tcs.TaskType == TaskType.WithContext)
             {
-                ETCancellationToken cancellationToken = this.tcs.Object as ETCancellationToken;
-                task.SetCancelToken(cancellationToken);
+                ETCancellationToken cancellationToken = this.tcs.Context as ETCancellationToken;
+                task.SetContext(cancellationToken);
                 return;
             }
             
-            this.tcs.Object = task;
+            this.tcs.Context = task;
         }
 
         // 7. Start
@@ -155,14 +155,14 @@ namespace ET
                 return;
             }
             
-            if (this.tcs.TaskType == TaskType.WithToken)
+            if (this.tcs.TaskType == TaskType.WithContext)
             {
-                ETCancellationToken cancellationToken = this.tcs.Object as ETCancellationToken;
-                task.SetCancelToken(cancellationToken);
+                ETCancellationToken cancellationToken = this.tcs.Context as ETCancellationToken;
+                task.SetContext(cancellationToken);
                 return;
             }
             
-            this.tcs.Object = task;
+            this.tcs.Context = task;
         }
 
         // 7. Start

+ 24 - 24
Unity/Packages/cn.etetet.core/Runtime/ETTask/ETTask.cs

@@ -9,27 +9,27 @@ namespace ET
 {
     internal static class IETTaskExtension
     {
-        internal static void SetCancelToken(this IETTask task, ETCancellationToken cancellationToken)
+        internal static void SetContext(this IETTask task, object context)
         {
             while (true)
             {
-                if (task.TaskType == TaskType.TokenTask)
+                if (task.TaskType == TaskType.ContextTask)
                 {
-                    (task as ETTask<ETCancellationToken>).SetResult(cancellationToken);
+                    ((ETTask<object>)task).SetResult(context);
                     break;
                 }
 
                 // cancellationToken传下去
-                task.TaskType = TaskType.WithToken;
-                object child = task.Object;
-                task.Object = cancellationToken;
+                task.TaskType = TaskType.WithContext;
+                object child = task.Context;
+                task.Context = context;
                 task = child as IETTask;
                 if (task == null)
                 {
                     break;
                 }
                 //// 传递到WithToken为止,因为可能这一层设置了新的canceltoken
-                if (task.TaskType == TaskType.WithToken)
+                if (task.TaskType == TaskType.WithContext)
                 {
                     break;
                 }
@@ -40,14 +40,14 @@ namespace ET
     public enum TaskType: byte
     {
         Common,
-        WithToken,
-        TokenTask,
+        WithContext,
+        ContextTask,
     }
     
     public interface IETTask
     {
         public TaskType TaskType { get; set; }
-        public object Object { get; set; }
+        public object Context { get; set; }
     }
     
     [AsyncMethodBuilder(typeof (ETAsyncTaskMethodBuilder))]
@@ -100,7 +100,7 @@ namespace ET
             
             this.state = AwaiterStatus.Pending;
             this.callback = null;
-            this.Object = null;
+            this.Context = null;
             this.TaskType = TaskType.Common;
             // 太多了
             if (queue.Count > 1000)
@@ -129,14 +129,14 @@ namespace ET
         [DebuggerHidden]
         public void Coroutine()
         {
-            this.SetCancelToken(null);
+            this.SetContext(null);
             InnerCoroutine().Coroutine();
         }
         
         [DebuggerHidden]
-        public void Coroutine(ETCancellationToken cancellationToken)
+        public void WithContext(object context)
         {
-            this.SetCancelToken(cancellationToken);
+            this.SetContext(context);
             InnerCoroutine().Coroutine();
         }
         
@@ -144,9 +144,9 @@ namespace ET
         /// 在await的同时可以换一个新的cancellationToken
         /// </summary>
         [DebuggerHidden]
-        public async ETTask NewCancel(ETCancellationToken cancellationToken)
+        public async ETTask NewContext(object context)
         {
-            this.SetCancelToken(cancellationToken);
+            this.SetContext(context);
             await this;
         }
 
@@ -235,7 +235,7 @@ namespace ET
         }
 
         public TaskType TaskType { get; set; }
-        public object Object { get; set; }
+        public object Context { get; set; }
     }
 
     [AsyncMethodBuilder(typeof (ETAsyncTaskMethodBuilder<>))]
@@ -274,7 +274,7 @@ namespace ET
             this.callback = null;
             this.value = default;
             this.state = AwaiterStatus.Pending;
-            this.Object = null;
+            this.Context = null;
             this.TaskType = TaskType.Common;
             // 太多了
             if (queue.Count > 1000)
@@ -304,14 +304,14 @@ namespace ET
         [DebuggerHidden]
         public void Coroutine()
         {
-            this.SetCancelToken(null);
+            this.SetContext(null);
             InnerCoroutine().Coroutine();
         }
         
         [DebuggerHidden]
-        public void Coroutine(ETCancellationToken cancellationToken)
+        public void WithContext(object context)
         {
-            this.SetCancelToken(cancellationToken);
+            this.SetContext(context);
             InnerCoroutine().Coroutine();
         }
         
@@ -319,9 +319,9 @@ namespace ET
         /// 在await的同时可以换一个新的cancellationToken
         /// </summary>
         [DebuggerHidden]
-        public async ETTask<T> NewCancel(ETCancellationToken cancellationToken)
+        public async ETTask<T> NewContext(object context)
         {
-            this.SetCancelToken(cancellationToken);
+            this.SetContext(context);
             return await this;
         }
 
@@ -411,6 +411,6 @@ namespace ET
         }
 
         public TaskType TaskType { get; set; }
-        public object Object { get; set; }
+        public object Context { get; set; }
     }
 }

+ 3 - 3
Unity/Packages/cn.etetet.core/Runtime/ETTask/ETTaskHelper.cs

@@ -5,10 +5,10 @@ namespace ET
 {
     public static class ETTaskHelper
     {
-        public static async ETTask<ETCancellationToken> GetCancelToken()
+        public static async ETTask<object> GetContextAsync()
         {
-            ETTask<ETCancellationToken> tcs = ETTask<ETCancellationToken>.Create(true);
-            tcs.TaskType = TaskType.TokenTask;
+            ETTask<object> tcs = ETTask<object>.Create(true);
+            tcs.TaskType = TaskType.ContextTask;
             return await tcs;
         }
         

+ 13 - 13
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/ETCancellationTokenHelper.cs

@@ -4,7 +4,7 @@ namespace ET
 {
     public static class ETCancellationTokenHelper
     {
-        private static async ETTask Timeout(this ETCancellationToken self, long afterTimeCancel)
+        private static async ETTask TimeoutAsync(this ETCancellationToken self, long afterTimeCancel)
         {
             if (afterTimeCancel <= 0)
             {
@@ -34,11 +34,11 @@ namespace ET
             {
                 throw new Exception("add cancel token is null");
             }
-            ETCancellationToken cancelToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             
             cancelToken?.Add(addCancelToken.Cancel);
             
-            await task.NewCancel(addCancelToken);
+            await task.NewContext(addCancelToken);
         }
         
         /// <summary>
@@ -51,36 +51,36 @@ namespace ET
                 throw new Exception("add cancel token is null");
             }
             
-            ETCancellationToken cancelToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancelToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             
             cancelToken?.Add(addCancelToken.Cancel);
             
-            return await task.NewCancel(addCancelToken);
+            return await task.NewContext(addCancelToken);
         }
         
-        public static async ETTask Timeout(this ETTask task, ETCancellationToken cancellationToken, long afterTimeCancel)
+        public static async ETTask TimeoutAsync(this ETTask task, ETCancellationToken cancellationToken, long afterTimeCancel)
         {
-            cancellationToken.Timeout(afterTimeCancel).Coroutine();
+            cancellationToken.TimeoutAsync(afterTimeCancel).Coroutine();
             await AddCancel(task, cancellationToken);
         }
         
-        public static async ETTask<T> Timeout<T>(this ETTask<T> task, ETCancellationToken cancellationToken, long afterTimeCancel)
+        public static async ETTask<T> TimeoutAsync<T>(this ETTask<T> task, ETCancellationToken cancellationToken, long afterTimeCancel)
         {
-            cancellationToken.Timeout(afterTimeCancel).Coroutine();
+            cancellationToken.TimeoutAsync(afterTimeCancel).Coroutine();
             return await AddCancel(task, cancellationToken);
         }
         
-        public static async ETTask Timeout(this ETTask task, long afterTimeCancel)
+        public static async ETTask TimeoutAsync(this ETTask task, long afterTimeCancel)
         {
             ETCancellationToken cancellationToken = new();
-            cancellationToken.Timeout(afterTimeCancel).Coroutine();
+            cancellationToken.TimeoutAsync(afterTimeCancel).Coroutine();
             await AddCancel(task, cancellationToken);
         }
         
-        public static async ETTask<T> Timeout<T>(this ETTask<T> task, long afterTimeCancel)
+        public static async ETTask<T> TimeoutAsync<T>(this ETTask<T> task, long afterTimeCancel)
         {
             ETCancellationToken cancellationToken = new();
-            cancellationToken.Timeout(afterTimeCancel).Coroutine();
+            cancellationToken.TimeoutAsync(afterTimeCancel).Coroutine();
             return await AddCancel(task, cancellationToken);
         }
     }

+ 2 - 2
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/Message/SessionSystem.cs

@@ -66,7 +66,7 @@ namespace ET
                 action.SetResult(response);
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             IResponse ret;
             try
             {
@@ -82,7 +82,7 @@ namespace ET
 
         public static async ETTask<IResponse> Call(this Session self, IRequest request, int timeout)
         {
-            return await self.Call(request).Timeout(timeout);
+            return await self.Call(request).TimeoutAsync(timeout);
         }
 
         public static void Send(this Session self, IMessage message)

+ 1 - 1
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/ObjectWait/ObjectWaitSystem.cs

@@ -26,7 +26,7 @@ namespace ET
         public static async ETTask<T> Wait<T>(this ObjectWait self) where T : struct, IWaitType
         {
             ResultCallback<T> tcs = new ResultCallback<T>();
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             self.tcss.Add(typeof (T), tcs);
             
             void CancelAction()

+ 2 - 2
Unity/Packages/cn.etetet.core/Scripts/Hotfix/Share/Timer/TimerComponentSystem.cs

@@ -158,7 +158,7 @@ namespace ET
                 }
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             try
             {
                 cancellationToken?.Add(CancelAction);
@@ -197,7 +197,7 @@ namespace ET
                 }
             }
 
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             try
             {
                 cancellationToken?.Add(CancelAction);

+ 1 - 1
Unity/Packages/cn.etetet.statesync/Scripts/Hotfix/Client/Main/Move/MoveHelper.cs

@@ -20,7 +20,7 @@ namespace ET.Client
             
             // 一直等到unit发送stop
             Wait_UnitStop waitUnitStop = await objectWait.Wait<Wait_UnitStop>();
-            ETCancellationToken cancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken cancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             if (cancellationToken.IsCancel())
             {
                 return WaitTypeError.Cancel;

+ 2 - 2
Unity/Packages/cn.etetet.statesync/Scripts/HotfixView/Client/Opera/OperaComponentSystem.cs

@@ -76,11 +76,11 @@ namespace ET.Client
         
         private static async ETTask TestCancelAfter(this OperaComponent self)
         {
-            ETCancellationToken oldCancellationToken = await ETTaskHelper.GetCancelToken();
+            ETCancellationToken oldCancellationToken = await ETTaskHelper.GetContextAsync() as ETCancellationToken;
             
             Log.Debug($"TestCancelAfter start");
             ETCancellationToken newCancellationToken = new();
-            await self.Fiber().Root.GetComponent<TimerComponent>().WaitAsync(3000).Timeout(newCancellationToken, 1000);
+            await self.Fiber().Root.GetComponent<TimerComponent>().WaitAsync(3000).TimeoutAsync(newCancellationToken, 1000);
             if (newCancellationToken.IsCancel())
             {
                 Log.Debug($"TestCancelAfter newCancellationToken is cancel!");