From d57e3c33829f15fa41d4adff46a2b1dd3c61cb17 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Tue, 24 Dec 2024 22:48:55 +0800 Subject: [PATCH 1/6] =?UTF-8?q?axihttp=E5=9B=BE=E7=89=87=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/AppMain/Manager/CacheManager.cs | 2 +- .../Assets/Script/AppMain/Manager/RomLib/RomFile.cs | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/CacheManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/CacheManager.cs index c2ce0b6..7d5e3b1 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/CacheManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/CacheManager.cs @@ -36,7 +36,7 @@ namespace AxibugEmuOnline.Client } AxiHttpProxy.ShowAxiHttpDebugInfo(request.downloadHandler); - if (request.downloadHandler.Err != null) + if (request.downloadHandler.Err == null) { Directory.CreateDirectory(path); File.WriteAllBytes($"{path}/{url.GetHashCode()}", request.downloadHandler.data); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs index d932481..873799b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs @@ -137,13 +137,9 @@ namespace AxibugEmuOnline.Client downloadRequest = null; if (request.downloadHandler.Err != null) - { - callback(null); - } + callback(request.downloadHandler.data); else - { - callback(request.downloadHandler.data); - } + callback(null); //downloadRequest = UnityWebRequest.Get($"{App.httpAPI.WebHost}/{webData.url}"); //yield return downloadRequest.SendWebRequest(); From 160867b0377d30f82e32f3e078be18fcb17e413f Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Tue, 24 Dec 2024 22:50:18 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Script/AppMain/AxibugEmuOnline.Client.asmdef | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxibugEmuOnline.Client.asmdef b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxibugEmuOnline.Client.asmdef index 565fecf..ea8be2c 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxibugEmuOnline.Client.asmdef +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxibugEmuOnline.Client.asmdef @@ -1,12 +1,19 @@ { "name": "AxibugEmuOnline.Client", + "rootNamespace": "", "references": [ "UIEffect", "AxiReplay", - "Unity.Postprocessing.Runtime" + "Unity.Postprocessing.Runtime", + "VirtualNes.Core" ], - "optionalUnityReferences": [], "includePlatforms": [], "excludePlatforms": [], - "allowUnsafeCode": true + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false } \ No newline at end of file From de897936a24d46170bb9ca19eb9a6b672af8b9b1 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Tue, 24 Dec 2024 23:00:08 +0800 Subject: [PATCH 3/6] fixed --- .../Assets/Script/AppMain/Manager/RomLib/RomFile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs index 873799b..d39c576 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomFile.cs @@ -136,7 +136,7 @@ namespace AxibugEmuOnline.Client var request = downloadRequest; downloadRequest = null; - if (request.downloadHandler.Err != null) + if (request.downloadHandler.Err == null) callback(request.downloadHandler.data); else callback(null); From 42a5e31557bba0ad08416960cd7ddf723af4055e Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Tue, 24 Dec 2024 23:35:32 +0800 Subject: [PATCH 4/6] =?UTF-8?q?axihttp=20=E7=BA=BF=E7=A8=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/AppMain/AxiHttp/AxiHttp.cs | 84 ++++++++++++++++--- .../Script/AppMain/AxiHttp/AxiHttpProxy.cs | 20 ++++- 2 files changed, 92 insertions(+), 12 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs index 7b5d29d..fa7717c 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs @@ -11,8 +11,65 @@ using System.Security.Cryptography.X509Certificates; using System.Text; using System.Text.RegularExpressions; using System.Threading; -using System.Threading.Tasks; +public static class PSVThread +{ + static Thread psvThread = new Thread(Loop); + static AutoResetEvent autoEvent = new AutoResetEvent(false); + static Queue qActs = new Queue(); + static Queue qWork = new Queue(); + + public static void DoTask(Action act) + { +#if UNITY_PSP2 + AddSingleTask(act); +#else + ThreadPool.QueueUserWorkItem(new WaitCallback((state) => act.Invoke())); +#endif + } + +#if UNITY_PSP2 + static bool bSingleInit = false; + static void SingleInit() + { + if (bSingleInit) return; + psvThread.Start(); + bSingleInit = true; + } + static void AddSingleTask(Action act) + { + SingleInit(); + lock (qActs) + { + qActs.Enqueue(act); + } + autoEvent.Set(); + } + + static void Loop() + { + while (autoEvent.WaitOne()) + { + lock (qActs) + { + while (qActs.Count > 0) { qWork.Enqueue(qActs.Dequeue()); } + } + while (qWork.Count > 0) + { + Action act = qWork.Dequeue(); + try + { + act.Invoke(); + } + catch (Exception ex) + { + UnityEngine.Debug.Log(ex.ToString()); + } + } + } + } +#endif +} public static class AxiHttp { @@ -127,14 +184,15 @@ public static class AxiHttp AxiRespInfo respInfo = new AxiRespInfo(); respInfo.downloadMode = AxiDownLoadMode.NotDownLoad; WaitAxiRequest respAsync = new WaitAxiRequest(respInfo); - Task task = new Task(() => SendAxiRequest(url, ref respInfo)); - task.Start(); + //Task task = new Task(() => SendAxiRequest(url, ref respInfo)); + //task.Start() + PSVThread.DoTask(() => SendAxiRequest(url, ref respInfo)); return respAsync; } public static AxiRespInfo AxiDownload(string url) { - AxiRespInfo respInfo = new AxiRespInfo(); + AxiRespInfo respInfo = new AxiRespInfo(); respInfo.downloadMode = AxiDownLoadMode.DownLoadBytes; SendAxiRequest(url, ref respInfo); return respInfo; @@ -142,19 +200,20 @@ public static class AxiHttp public static AxiRespInfo AxiDownloadAsync(string url) { - AxiRespInfo respInfo = new AxiRespInfo(); + AxiRespInfo respInfo = new AxiRespInfo(); respInfo.downloadMode = AxiDownLoadMode.DownLoadBytes; - Task task = new Task(() => SendAxiRequest(url, ref respInfo)); - task.Start(); + //Task task = new Task(() => SendAxiRequest(url, ref respInfo)); + //task.Start(); + PSVThread.DoTask(() => SendAxiRequest(url, ref respInfo)); return respInfo; } - static void SendAxiRequest(string url, ref AxiRespInfo respinfo,int timeout = 1000 * 1000, string encoding = "UTF-8") + static void SendAxiRequest(string url, ref AxiRespInfo respinfo, int timeout = 1000 * 1000, string encoding = "UTF-8") { if (url.ToLower().StartsWith("https://")) - SendAxiRequestHttps(url, ref respinfo,timeout, encoding);// SendAxiRequestHttps(url, ref respinfo, timeout, encoding); + SendAxiRequestHttps(url, ref respinfo, timeout, encoding);// SendAxiRequestHttps(url, ref respinfo, timeout, encoding); else - SendAxiRequestHttp(url, ref respinfo,timeout, encoding); + SendAxiRequestHttp(url, ref respinfo, timeout, encoding); } static void SendAxiRequestHttp(string url, ref AxiRespInfo respinfo, int timeout, string encoding) @@ -735,6 +794,9 @@ public static class AxiHttp //} respinfo.isDone = true; } + + if (client != null) + client.Dispose(); } @@ -1023,7 +1085,7 @@ public static class AxiHttp { try { - Log($"convertToIntBy16 str- {str} lenght->{str.Length}"); + //Log($"convertToIntBy16 str- {str} lenght->{str.Length}"); if (str.Length == 0) return 0; return Convert.ToInt32(str, 16); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttpProxy.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttpProxy.cs index ec6172e..16d81d2 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttpProxy.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttpProxy.cs @@ -1,4 +1,3 @@ -using System.Collections; using UnityEngine; using static AxiHttp; @@ -46,6 +45,8 @@ public static class AxiHttpProxy public static void ShowAxiHttpDebugInfo(AxiRespInfo resp) { + +#if UNITY_EDITOR Debug.Log($""); Debug.Log($"==== request ===="); Debug.Log($"url =>{resp.url}"); @@ -70,6 +71,23 @@ public static class AxiHttpProxy Debug.Log($"respInfo.fileName =>{resp.fileName}"); Debug.Log($"respInfo.NeedloadedLenght =>{resp.NeedloadedLenght}"); Debug.Log($"respInfo.loadedLenght =>{resp.loadedLenght}"); +#else + Debug.Log($"==== request url => { resp.url}"); + Debug.Log($"code =>{resp.code}"); + Debug.Log($"respInfo.bTimeOut =>{resp.bTimeOut}"); + Debug.Log($"==== response ===="); + if (resp.downloadMode == AxiDownLoadMode.NotDownLoad) + { + Debug.Log($"body_text =>{resp.body}"); + Debug.Log($"body_text.Length =>{resp.body.Length}"); + } + else + { + Debug.Log($"==== download ===="); + Debug.Log($"respInfo.loadedLenght =>{resp.loadedLenght}"); + } +#endif + //if (resp.downloadMode == AxiDownLoadMode.DownLoadBytes) //{ // if (resp.bTimeOut) From 063e256c358052970352469f439c218dbd568c10 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Tue, 24 Dec 2024 23:36:49 +0800 Subject: [PATCH 5/6] axihttp fixed --- AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs index fa7717c..844cd2b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs @@ -14,7 +14,6 @@ using System.Threading; public static class PSVThread { - static Thread psvThread = new Thread(Loop); static AutoResetEvent autoEvent = new AutoResetEvent(false); static Queue qActs = new Queue(); static Queue qWork = new Queue(); @@ -29,6 +28,7 @@ public static class PSVThread } #if UNITY_PSP2 + static Thread psvThread = new Thread(Loop); static bool bSingleInit = false; static void SingleInit() { From 80f4e950e0c020618c0b787222c07f21d10d4583 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Wed, 25 Dec 2024 00:49:06 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=9B=B4=E6=8D=A2HaoYueNet=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E5=BA=93=E7=89=88=E6=9C=AC=20=E6=9B=B4=E6=8D=A2?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HaoYueNet.ClientNetwork.Standard2.dll | Bin 0 -> 34304 bytes ...HaoYueNet.ClientNetwork.Standard2.dll.meta | 2 ++ .../HaoYueNet.ClientNetworkNet.Standard2.dll | Bin 21504 -> 0 bytes ...YueNet.ClientNetworkNet.Standard2.dll.meta | 33 ------------------ .../Script/AppMain/Network/NetworkHelper.cs | 2 +- 5 files changed, 3 insertions(+), 34 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetwork.Standard2.dll create mode 100644 AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetwork.Standard2.dll.meta delete mode 100644 AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetworkNet.Standard2.dll delete mode 100644 AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetworkNet.Standard2.dll.meta diff --git a/AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetwork.Standard2.dll b/AxibugEmuOnline.Client/Assets/Plugins/HaoYueNet.ClientNetwork.Standard2.dll new file mode 100644 index 0000000000000000000000000000000000000000..3802b84e5e2727cdf790b9e869fb721577dfbabb GIT binary patch literal 34304 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 TRge5O^$%*vzbpR(c;Np4%