diff --git a/Api/Transmittal/DataRequest.cs b/Api/Transmittal/DataRequest.cs index 86c5f22..8da78d8 100644 --- a/Api/Transmittal/DataRequest.cs +++ b/Api/Transmittal/DataRequest.cs @@ -1,13 +1,17 @@ using System.Collections; -using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Library.Common.Architecture; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Library.Exception; namespace Milimoe.FunGame.Core.Api.Transmittal { public class DataRequest { + public bool Success => Worker.Success; + public string Error => Worker.Error; + public object? this[string key] => Worker.ResultData[key]; + private readonly Request Worker; public DataRequest(Socket Socket, DataRequestType RequestType) @@ -20,13 +24,11 @@ namespace Milimoe.FunGame.Core.Api.Transmittal Worker.RequestData.Add(key, value); } - public async Task SendRequest() + public void SendRequest() { - await Worker.SendRequest(); + Worker.SendRequest(); } - public object? this[string key] => Worker.ResultData[key]; - public T? GetResult(string key) { object? obj = this[key]; @@ -41,33 +43,36 @@ namespace Milimoe.FunGame.Core.Api.Transmittal { public Hashtable RequestData { get; } = new(); public Hashtable ResultData => _Result; + public bool Success => _Success; + public string Error => _Error; - private bool JobFinish = false; private readonly Socket? Socket; private readonly DataRequestType RequestType; + + private bool _Finish = false; + private bool _Success = false; + private string _Error = ""; private Hashtable _Result = new(); - public async Task SendRequest() + public void SendRequest() { try { - if (Socket?.Send(SocketMessageType.DataRequest, RequestData) == SocketResult.Success) + if (Socket?.Send(SocketMessageType.DataRequest, RequestType, RequestData) == SocketResult.Success) { - await Task.Run(() => + while (true) { - while (true) - { - if (JobFinish) break; - Thread.Sleep(100); - } - }); + if (_Finish) break; + Thread.Sleep(100); + } } } - catch + catch (Exception e) { - return RequestResult.Fail; + _Finish = true; + _Success = false; + _Error = e.GetErrorInfo(); } - return RequestResult.Success; } public Request(Socket? socket, DataRequestType requestType) : base(socket) @@ -78,16 +83,26 @@ namespace Milimoe.FunGame.Core.Api.Transmittal public override void SocketHandler(SocketObject SocketObject) { - if (SocketObject.SocketType == SocketMessageType.DataRequest) + try { - DataRequestType type = SocketObject.GetParam(0); - if (type == RequestType) + if (SocketObject.SocketType == SocketMessageType.DataRequest) { - Dispose(); - _Result = SocketObject.GetParam(1) ?? new(); - JobFinish = true; + DataRequestType type = SocketObject.GetParam(0); + if (type == RequestType) + { + Dispose(); + _Result = SocketObject.GetParam(1) ?? new(); + _Finish = true; + _Success = true; + } } } + catch (Exception e) + { + _Finish = true; + _Success = false; + _Error = e.GetErrorInfo(); + } } } } diff --git a/Library/Constant/ConstantSet.cs b/Library/Constant/ConstantSet.cs index bd22d6f..e3c814a 100644 --- a/Library/Constant/ConstantSet.cs +++ b/Library/Constant/ConstantSet.cs @@ -30,6 +30,7 @@ public const string Socket = "Socket"; public const string Unknown = "Unknown"; + public const string DataRequest = "DataRequest"; public const string Connect = "Connect"; public const string GetNotice = "GetNotice"; public const string Login = "Login"; diff --git a/Library/Constant/TypeEnum.cs b/Library/Constant/TypeEnum.cs index 65b63af..30f67c5 100644 --- a/Library/Constant/TypeEnum.cs +++ b/Library/Constant/TypeEnum.cs @@ -8,7 +8,8 @@ Inventory, RoomSetting, Store, - UserCenter + UserCenter, + ForgetPassword } public enum OpenFormType @@ -78,7 +79,8 @@ public enum DataRequestType { - UnKnown + UnKnown, + GetFindPasswordVerifyCode } public enum SocketRuntimeType diff --git a/Service/SocketManager.cs b/Service/SocketManager.cs index 944318a..6171b8a 100644 --- a/Service/SocketManager.cs +++ b/Service/SocketManager.cs @@ -268,6 +268,7 @@ namespace Milimoe.FunGame.Core.Service { return type switch { + SocketMessageType.DataRequest => SocketSet.DataRequest, SocketMessageType.Connect => SocketSet.Connect, SocketMessageType.GetNotice => SocketSet.GetNotice, SocketMessageType.Login => SocketSet.Login,