Skip to content

Commit 8b7ea2b

Browse files
committed
refactor(web): 修复 WebBinaryData 命名与代码规范
- Task 属性重命名为 TaskSource 避免与 System.Threading.Tasks.Task 冲突 - 补回 Create 方法的 task 空值检查 - 提取 CopyHeader 辅助方法与 WebJsonData 风格统一 GameFrameX/com.gameframex.unity#5
1 parent 961c6a2 commit 8b7ea2b

2 files changed

Lines changed: 41 additions & 28 deletions

File tree

Runtime/Web/WebManager.Binary.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,12 @@ private async void MakeBinaryBytesRequest(WebBinaryData webData)
118118
m_SendingBinaryList.Remove(webData);
119119
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError || unityWebRequest.error != null)
120120
{
121-
webData.Task.TrySetException(new Exception(unityWebRequest.error));
121+
webData.TaskSource.TrySetException(new Exception(unityWebRequest.error));
122122
ReferencePool.Release(webData);
123123
return;
124124
}
125125

126-
webData.Task.SetResult(new WebBufferResult(webData.UserData, unityWebRequest.downloadHandler.data));
126+
webData.TaskSource.SetResult(new WebBufferResult(webData.UserData, unityWebRequest.downloadHandler.data));
127127
ReferencePool.Release(webData);
128128
};
129129
#else
@@ -165,7 +165,7 @@ private async void MakeBinaryBytesRequest(WebBinaryData webData)
165165
m_MemoryStream.Position = 0;
166166
await responseStream.CopyToAsync(m_MemoryStream);
167167
var resultData = m_MemoryStream.ToArray();
168-
webData.Task.SetResult(new WebBufferResult(webData.UserData, resultData)); // 将流的内容复制到内存流中并转换为byte数组
168+
webData.TaskSource.SetResult(new WebBufferResult(webData.UserData, resultData)); // 将流的内容复制到内存流中并转换为byte数组
169169
}
170170
}
171171
}
@@ -174,19 +174,19 @@ private async void MakeBinaryBytesRequest(WebBinaryData webData)
174174
// 捕获超时异常
175175
if (e.Status == WebExceptionStatus.Timeout)
176176
{
177-
webData.Task.SetException(new TimeoutException(e.Message));
177+
webData.TaskSource.SetException(new TimeoutException(e.Message));
178178
return;
179179
}
180180

181-
webData.Task.SetException(e);
181+
webData.TaskSource.SetException(e);
182182
}
183183
catch (IOException e)
184184
{
185-
webData.Task.SetException(e);
185+
webData.TaskSource.SetException(e);
186186
}
187187
catch (Exception e)
188188
{
189-
webData.Task.SetException(e);
189+
webData.TaskSource.SetException(e);
190190
}
191191
finally
192192
{

Runtime/Web/WebManager.WebBinaryData.cs

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Threading.Tasks;
34
using GameFrameX.Runtime;
@@ -16,7 +17,7 @@ private sealed class WebBinaryData : WebData
1617
/// <summary>
1718
/// 获取请求任务的完成源,用于异步操作的控制和结果返回
1819
/// </summary>
19-
public TaskCompletionSource<WebBufferResult> Task { get; private set; }
20+
public TaskCompletionSource<WebBufferResult> TaskSource { get; private set; }
2021

2122
/// <summary>
2223
/// 获取要发送的字节数组数据
@@ -38,39 +39,29 @@ public WebBinaryData() { }
3839
/// </summary>
3940
public static WebBinaryData Create(string url, Dictionary<string, string> header, byte[] sendData, TaskCompletionSource<WebBufferResult> task, object userData)
4041
{
42+
if (task == null)
43+
{
44+
throw new ArgumentNullException(nameof(task));
45+
}
46+
4147
var data = ReferencePool.Acquire<WebBinaryData>();
4248
data.URL = url;
4349
data.IsGet = false;
4450
data.UserData = userData;
45-
data.Task = task;
51+
data.TaskSource = task;
4652
data.SendData = sendData;
4753

48-
if (header != null && header.Count > 0)
49-
{
50-
if (data.m_Header == null)
51-
{
52-
data.m_Header = new Dictionary<string, string>(header.Count);
53-
}
54-
else
55-
{
56-
data.m_Header.Clear();
57-
}
58-
59-
foreach (var kv in header)
60-
{
61-
data.m_Header[kv.Key] = kv.Value;
62-
}
63-
}
54+
CopyHeader(data, header);
6455

6556
return data;
6657
}
6758

6859
public override void Clear()
6960
{
70-
if (Task != null)
61+
if (TaskSource != null)
7162
{
72-
Task.TrySetCanceled();
73-
Task = null;
63+
TaskSource.TrySetCanceled();
64+
TaskSource = null;
7465
}
7566

7667
SendData = null;
@@ -82,6 +73,28 @@ public override void Clear()
8273

8374
base.Clear();
8475
}
76+
77+
private static void CopyHeader(WebBinaryData data, Dictionary<string, string> header)
78+
{
79+
if (header == null || header.Count == 0)
80+
{
81+
return;
82+
}
83+
84+
if (data.m_Header == null)
85+
{
86+
data.m_Header = new Dictionary<string, string>(header.Count);
87+
}
88+
else
89+
{
90+
data.m_Header.Clear();
91+
}
92+
93+
foreach (var kv in header)
94+
{
95+
data.m_Header[kv.Key] = kv.Value;
96+
}
97+
}
8598
}
8699
}
87100
}

0 commit comments

Comments
 (0)