mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-23 04:29:36 +08:00
#80:为Addon添加了专用的DataRequest方法 (#84)
This commit is contained in:
parent
b53d95525a
commit
924a45413a
@ -54,53 +54,59 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的 <see cref="Socket"/> 创建新的数据请求<para/>
|
/// 基于本地已连接的 <see cref="Socket"/> 创建新的数据请求<para/>
|
||||||
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(DataRequestType)"/> 创建一个新的请求
|
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(DataRequestType)"/> 创建一个新的请求
|
||||||
|
/// 插件则使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequestForAddon(DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Socket"></param>
|
/// <param name="Socket"></param>
|
||||||
/// <param name="RequestType"></param>
|
/// <param name="RequestType"></param>
|
||||||
/// <param name="IsLongRunning"></param>
|
/// <param name="IsLongRunning"></param>
|
||||||
internal DataRequest(Socket Socket, DataRequestType RequestType, bool IsLongRunning = false)
|
/// <param name="RuntimeType"></param>
|
||||||
|
internal DataRequest(Socket Socket, DataRequestType RequestType, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client)
|
||||||
{
|
{
|
||||||
Worker = new(Socket, RequestType, Guid.NewGuid(), IsLongRunning);
|
Worker = new(Socket, RequestType, Guid.NewGuid(), IsLongRunning, RuntimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的 <see cref="HTTPClient"/> 创建新的数据请求<para/>
|
/// 基于本地已连接的 <see cref="HTTPClient"/> 创建新的数据请求<para/>
|
||||||
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(DataRequestType)"/> 创建一个新的请求<para/>
|
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
|
/// 插件则使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequestForAddon(DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
/// 此数据请求只能调用异步方法 <see cref="SendRequestAsync"/> 请求数据
|
/// 此数据请求只能调用异步方法 <see cref="SendRequestAsync"/> 请求数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="WebSocket"></param>
|
/// <param name="WebSocket"></param>
|
||||||
/// <param name="RequestType"></param>
|
/// <param name="RequestType"></param>
|
||||||
/// <param name="IsLongRunning"></param>
|
/// <param name="IsLongRunning"></param>
|
||||||
internal DataRequest(HTTPClient WebSocket, DataRequestType RequestType, bool IsLongRunning = false)
|
/// <param name="RuntimeType"></param>
|
||||||
|
internal DataRequest(HTTPClient WebSocket, DataRequestType RequestType, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client)
|
||||||
{
|
{
|
||||||
Worker = new(WebSocket, RequestType, Guid.NewGuid(), IsLongRunning);
|
Worker = new(WebSocket, RequestType, Guid.NewGuid(), IsLongRunning, RuntimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的 <see cref="Socket"/> 创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
/// 基于本地已连接的 <see cref="Socket"/> 创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
||||||
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(GamingType)"/> 创建一个新的请求<para/>
|
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequestForAddon(GamingType)"/> 创建一个新的请求<para/>
|
||||||
/// 此构造方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
/// 此构造方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Socket"></param>
|
/// <param name="Socket"></param>
|
||||||
/// <param name="GamingType"></param>
|
/// <param name="GamingType"></param>
|
||||||
/// <param name="IsLongRunning"></param>
|
/// <param name="IsLongRunning"></param>
|
||||||
internal DataRequest(Socket Socket, GamingType GamingType, bool IsLongRunning = false)
|
/// <param name="RuntimeType"></param>
|
||||||
|
internal DataRequest(Socket Socket, GamingType GamingType, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client)
|
||||||
{
|
{
|
||||||
GamingWorker = new(Socket, GamingType, Guid.NewGuid(), IsLongRunning);
|
GamingWorker = new(Socket, GamingType, Guid.NewGuid(), IsLongRunning, RuntimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的 <see cref="HTTPClient"/> 创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
/// 基于本地已连接的 <see cref="HTTPClient"/> 创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
||||||
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequest(GamingType)"/> 创建一个新的请求<para/>
|
/// 使用 <see cref="RunTimeController"/> 中的 <see cref="RunTimeController.NewDataRequestForAddon(GamingType)"/> 创建一个新的请求<para/>
|
||||||
/// 此构造方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的<para/>
|
/// 此构造方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的<para/>
|
||||||
/// 此数据请求只能调用异步方法 <see cref="SendRequestAsync"/> 请求数据
|
/// 此数据请求只能调用异步方法 <see cref="SendRequestAsync"/> 请求数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="WebSocket"></param>
|
/// <param name="WebSocket"></param>
|
||||||
/// <param name="GamingType"></param>
|
/// <param name="GamingType"></param>
|
||||||
/// <param name="IsLongRunning"></param>
|
/// <param name="IsLongRunning"></param>
|
||||||
internal DataRequest(HTTPClient WebSocket, GamingType GamingType, bool IsLongRunning = false)
|
/// <param name="RuntimeType"></param>
|
||||||
|
internal DataRequest(HTTPClient WebSocket, GamingType GamingType, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client)
|
||||||
{
|
{
|
||||||
GamingWorker = new(WebSocket, GamingType, Guid.NewGuid(), IsLongRunning);
|
GamingWorker = new(WebSocket, GamingType, Guid.NewGuid(), IsLongRunning, RuntimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -195,24 +201,27 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
private readonly DataRequestType RequestType = DataRequestType.UnKnown;
|
private readonly DataRequestType RequestType = DataRequestType.UnKnown;
|
||||||
private readonly Guid RequestID = Guid.Empty;
|
private readonly Guid RequestID = Guid.Empty;
|
||||||
private readonly bool IsLongRunning = false;
|
private readonly bool IsLongRunning = false;
|
||||||
|
private readonly SocketRuntimeType RuntimeType = SocketRuntimeType.Client;
|
||||||
private Hashtable _ResultData = [];
|
private Hashtable _ResultData = [];
|
||||||
private RequestResult _Result = RequestResult.Missing;
|
private RequestResult _Result = RequestResult.Missing;
|
||||||
private string _Error = "";
|
private string _Error = "";
|
||||||
|
|
||||||
public SocketRequest(Socket? Socket, DataRequestType RequestType, Guid RequestID, bool IsLongRunning = false) : base(Socket)
|
public SocketRequest(Socket? Socket, DataRequestType RequestType, Guid RequestID, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client) : base(Socket)
|
||||||
{
|
{
|
||||||
this.Socket = Socket;
|
this.Socket = Socket;
|
||||||
this.RequestType = RequestType;
|
this.RequestType = RequestType;
|
||||||
this.RequestID = RequestID;
|
this.RequestID = RequestID;
|
||||||
this.IsLongRunning = IsLongRunning;
|
this.IsLongRunning = IsLongRunning;
|
||||||
|
this.RuntimeType = RuntimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SocketRequest(HTTPClient? WebSocket, DataRequestType RequestType, Guid RequestID, bool IsLongRunning = false) : base(WebSocket)
|
public SocketRequest(HTTPClient? WebSocket, DataRequestType RequestType, Guid RequestID, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client) : base(WebSocket)
|
||||||
{
|
{
|
||||||
this.WebSocket = WebSocket;
|
this.WebSocket = WebSocket;
|
||||||
this.RequestType = RequestType;
|
this.RequestType = RequestType;
|
||||||
this.RequestID = RequestID;
|
this.RequestID = RequestID;
|
||||||
this.IsLongRunning = IsLongRunning;
|
this.IsLongRunning = IsLongRunning;
|
||||||
|
this.RuntimeType = RuntimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendRequest()
|
public void SendRequest()
|
||||||
@ -220,6 +229,12 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
SetWorking();
|
SetWorking();
|
||||||
|
if (RuntimeType == SocketRuntimeType.Addon || RuntimeType == SocketRuntimeType.Addon)
|
||||||
|
{
|
||||||
|
if (RequestData.ContainsKey(SocketSet.Plugins_Mark)) RequestData[SocketSet.Plugins_Mark] = "true";
|
||||||
|
else RequestData.Add(SocketSet.Plugins_Mark, true);
|
||||||
|
}
|
||||||
|
else RequestData.Remove(SocketSet.Plugins_Mark);
|
||||||
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, RequestType, RequestID, RequestData) == SocketResult.Success)
|
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, RequestType, RequestID, RequestData) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
WaitForWorkDone();
|
WaitForWorkDone();
|
||||||
@ -243,6 +258,12 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
SetWorking();
|
SetWorking();
|
||||||
|
if (RuntimeType == SocketRuntimeType.Addon || RuntimeType == SocketRuntimeType.Addon)
|
||||||
|
{
|
||||||
|
if (RequestData.ContainsKey(SocketSet.Plugins_Mark)) RequestData[SocketSet.Plugins_Mark] = "true";
|
||||||
|
else RequestData.Add(SocketSet.Plugins_Mark, true);
|
||||||
|
}
|
||||||
|
else RequestData.Remove(SocketSet.Plugins_Mark);
|
||||||
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, RequestType, RequestID, RequestData) == SocketResult.Success)
|
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, RequestType, RequestID, RequestData) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
await WaitForWorkDoneAsync();
|
await WaitForWorkDoneAsync();
|
||||||
@ -303,24 +324,27 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
private readonly GamingType GamingType = GamingType.None;
|
private readonly GamingType GamingType = GamingType.None;
|
||||||
private readonly Guid RequestID = Guid.Empty;
|
private readonly Guid RequestID = Guid.Empty;
|
||||||
private readonly bool IsLongRunning = false;
|
private readonly bool IsLongRunning = false;
|
||||||
|
private readonly SocketRuntimeType RuntimeType = SocketRuntimeType.Client;
|
||||||
private Hashtable _ResultData = [];
|
private Hashtable _ResultData = [];
|
||||||
private RequestResult _Result = RequestResult.Missing;
|
private RequestResult _Result = RequestResult.Missing;
|
||||||
private string _Error = "";
|
private string _Error = "";
|
||||||
|
|
||||||
public GamingRequest(Socket? Socket, GamingType GamingType, Guid RequestID, bool IsLongRunning = false) : base(Socket)
|
public GamingRequest(Socket? Socket, GamingType GamingType, Guid RequestID, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client) : base(Socket)
|
||||||
{
|
{
|
||||||
this.Socket = Socket;
|
this.Socket = Socket;
|
||||||
this.GamingType = GamingType;
|
this.GamingType = GamingType;
|
||||||
this.RequestID = RequestID;
|
this.RequestID = RequestID;
|
||||||
this.IsLongRunning = IsLongRunning;
|
this.IsLongRunning = IsLongRunning;
|
||||||
|
this.RuntimeType = RuntimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GamingRequest(HTTPClient? WebSocket, GamingType GamingType, Guid RequestID, bool IsLongRunning = false) : base(WebSocket)
|
public GamingRequest(HTTPClient? WebSocket, GamingType GamingType, Guid RequestID, bool IsLongRunning = false, SocketRuntimeType RuntimeType = SocketRuntimeType.Client) : base(WebSocket)
|
||||||
{
|
{
|
||||||
this.WebSocket = WebSocket;
|
this.WebSocket = WebSocket;
|
||||||
this.GamingType = GamingType;
|
this.GamingType = GamingType;
|
||||||
this.RequestID = RequestID;
|
this.RequestID = RequestID;
|
||||||
this.IsLongRunning = IsLongRunning;
|
this.IsLongRunning = IsLongRunning;
|
||||||
|
this.RuntimeType = RuntimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendRequest()
|
public void SendRequest()
|
||||||
@ -328,6 +352,12 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
SetWorking();
|
SetWorking();
|
||||||
|
if (RuntimeType == SocketRuntimeType.Addon || RuntimeType == SocketRuntimeType.Addon)
|
||||||
|
{
|
||||||
|
if (RequestData.ContainsKey(SocketSet.Plugins_Mark)) RequestData[SocketSet.Plugins_Mark] = "true";
|
||||||
|
else RequestData.Add(SocketSet.Plugins_Mark, true);
|
||||||
|
}
|
||||||
|
else RequestData.Remove(SocketSet.Plugins_Mark);
|
||||||
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, GamingType, RequestID, RequestData) == SocketResult.Success)
|
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, GamingType, RequestID, RequestData) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
WaitForWorkDone();
|
WaitForWorkDone();
|
||||||
@ -351,6 +381,12 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
SetWorking();
|
SetWorking();
|
||||||
|
if (RuntimeType == SocketRuntimeType.Addon || RuntimeType == SocketRuntimeType.Addon)
|
||||||
|
{
|
||||||
|
if (RequestData.ContainsKey(SocketSet.Plugins_Mark)) RequestData[SocketSet.Plugins_Mark] = "true";
|
||||||
|
else RequestData.Add(SocketSet.Plugins_Mark, true);
|
||||||
|
}
|
||||||
|
else RequestData.Remove(SocketSet.Plugins_Mark);
|
||||||
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, GamingType, RequestID, RequestData) == SocketResult.Success)
|
if (Socket != null && Socket.Send(SocketMessageType.DataRequest, GamingType, RequestID, RequestData) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
await WaitForWorkDoneAsync();
|
await WaitForWorkDoneAsync();
|
||||||
|
@ -286,18 +286,52 @@ namespace Milimoe.FunGame.Core.Controller
|
|||||||
throw new ConnectFailedException();
|
throw new ConnectFailedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 基于本地已连接的Socket创建新的数据请求<para/>
|
||||||
|
/// 加载项专用(<see cref="Library.Common.Addon.Plugin"/> / <see cref="Library.Common.Addon.GameModule"/>)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="RequestType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="ConnectFailedException"></exception>
|
||||||
|
public DataRequest NewDataRequestForAddon(DataRequestType RequestType)
|
||||||
|
{
|
||||||
|
if (_Socket != null)
|
||||||
|
{
|
||||||
|
DataRequest request = new(_Socket, RequestType, false, SocketRuntimeType.Addon);
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
throw new ConnectFailedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 基于本地已连接的Socket创建长时间运行的数据请求
|
||||||
|
/// 加载项专用(<see cref="Library.Common.Addon.Plugin"/> / <see cref="Library.Common.Addon.GameModule"/>)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="RequestType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="ConnectFailedException"></exception>
|
||||||
|
public DataRequest NewLongRunningDataRequestForAddon(DataRequestType RequestType)
|
||||||
|
{
|
||||||
|
if (_Socket != null)
|
||||||
|
{
|
||||||
|
DataRequest request = new(_Socket, RequestType, true, SocketRuntimeType.Addon);
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
throw new ConnectFailedException();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的Socket创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
/// 基于本地已连接的Socket创建新的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
||||||
/// 此方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
/// 加载项专用:此方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="GamingType"></param>
|
/// <param name="GamingType"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="ConnectFailedException"></exception>
|
/// <exception cref="ConnectFailedException"></exception>
|
||||||
public DataRequest NewDataRequest(GamingType GamingType)
|
public DataRequest NewDataRequestForAddon(GamingType GamingType)
|
||||||
{
|
{
|
||||||
if (_Socket != null)
|
if (_Socket != null)
|
||||||
{
|
{
|
||||||
DataRequest request = new(_Socket, GamingType);
|
DataRequest request = new(_Socket, GamingType, false, SocketRuntimeType.Addon);
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
throw new ConnectFailedException();
|
throw new ConnectFailedException();
|
||||||
@ -305,16 +339,16 @@ namespace Milimoe.FunGame.Core.Controller
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于本地已连接的Socket创建长时间运行的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
/// 基于本地已连接的Socket创建长时间运行的局内(<see cref="Model.Gaming"/>)数据请求<para/>
|
||||||
/// 此方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
/// 加载项专用:此方法是给 <see cref="Library.Common.Addon.GameModule"/> 提供的
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="GamingType"></param>
|
/// <param name="GamingType"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="ConnectFailedException"></exception>
|
/// <exception cref="ConnectFailedException"></exception>
|
||||||
public DataRequest NewLongRunningDataRequest(GamingType GamingType)
|
public DataRequest NewLongRunningDataRequestForAddon(GamingType GamingType)
|
||||||
{
|
{
|
||||||
if (_Socket != null)
|
if (_Socket != null)
|
||||||
{
|
{
|
||||||
DataRequest request = new(_Socket, GamingType, true);
|
DataRequest request = new(_Socket, GamingType, true, SocketRuntimeType.Addon);
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
throw new ConnectFailedException();
|
throw new ConnectFailedException();
|
||||||
|
@ -31,45 +31,51 @@
|
|||||||
私有的实现类(这是局内请求的)
|
私有的实现类(这是局内请求的)
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.Socket,Milimoe.FunGame.Core.Library.Constant.DataRequestType,System.Boolean)">
|
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.Socket,Milimoe.FunGame.Core.Library.Constant.DataRequestType,System.Boolean,Milimoe.FunGame.Core.Library.Constant.SocketRuntimeType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.Socket"/> 创建新的数据请求<para/>
|
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.Socket"/> 创建新的数据请求<para/>
|
||||||
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求
|
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求
|
||||||
|
插件则使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
</summary>
|
</summary>
|
||||||
<param name="Socket"></param>
|
<param name="Socket"></param>
|
||||||
<param name="RequestType"></param>
|
<param name="RequestType"></param>
|
||||||
<param name="IsLongRunning"></param>
|
<param name="IsLongRunning"></param>
|
||||||
|
<param name="RuntimeType"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.HTTPClient,Milimoe.FunGame.Core.Library.Constant.DataRequestType,System.Boolean)">
|
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.HTTPClient,Milimoe.FunGame.Core.Library.Constant.DataRequestType,System.Boolean,Milimoe.FunGame.Core.Library.Constant.SocketRuntimeType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.HTTPClient"/> 创建新的数据请求<para/>
|
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.HTTPClient"/> 创建新的数据请求<para/>
|
||||||
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求<para/>
|
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
|
插件则使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.DataRequestType)"/> 创建一个新的请求<para/>
|
||||||
此数据请求只能调用异步方法 <see cref="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.SendRequestAsync"/> 请求数据
|
此数据请求只能调用异步方法 <see cref="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.SendRequestAsync"/> 请求数据
|
||||||
</summary>
|
</summary>
|
||||||
<param name="WebSocket"></param>
|
<param name="WebSocket"></param>
|
||||||
<param name="RequestType"></param>
|
<param name="RequestType"></param>
|
||||||
<param name="IsLongRunning"></param>
|
<param name="IsLongRunning"></param>
|
||||||
|
<param name="RuntimeType"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.Socket,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Boolean)">
|
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.Socket,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Boolean,Milimoe.FunGame.Core.Library.Constant.SocketRuntimeType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.Socket"/> 创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.Socket"/> 创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
||||||
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.GamingType)"/> 创建一个新的请求<para/>
|
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.GamingType)"/> 创建一个新的请求<para/>
|
||||||
此构造方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
此构造方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
||||||
</summary>
|
</summary>
|
||||||
<param name="Socket"></param>
|
<param name="Socket"></param>
|
||||||
<param name="GamingType"></param>
|
<param name="GamingType"></param>
|
||||||
<param name="IsLongRunning"></param>
|
<param name="IsLongRunning"></param>
|
||||||
|
<param name="RuntimeType"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.HTTPClient,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Boolean)">
|
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.#ctor(Milimoe.FunGame.Core.Library.Common.Network.HTTPClient,Milimoe.FunGame.Core.Library.Constant.GamingType,System.Boolean,Milimoe.FunGame.Core.Library.Constant.SocketRuntimeType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.HTTPClient"/> 创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
基于本地已连接的 <see cref="T:Milimoe.FunGame.Core.Library.Common.Network.HTTPClient"/> 创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
||||||
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.GamingType)"/> 创建一个新的请求<para/>
|
使用 <see cref="T:Milimoe.FunGame.Core.Controller.RunTimeController"/> 中的 <see cref="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.GamingType)"/> 创建一个新的请求<para/>
|
||||||
此构造方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的<para/>
|
此构造方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的<para/>
|
||||||
此数据请求只能调用异步方法 <see cref="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.SendRequestAsync"/> 请求数据
|
此数据请求只能调用异步方法 <see cref="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.SendRequestAsync"/> 请求数据
|
||||||
</summary>
|
</summary>
|
||||||
<param name="WebSocket"></param>
|
<param name="WebSocket"></param>
|
||||||
<param name="GamingType"></param>
|
<param name="GamingType"></param>
|
||||||
<param name="IsLongRunning"></param>
|
<param name="IsLongRunning"></param>
|
||||||
|
<param name="RuntimeType"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.AddRequestData(System.String,System.Object)">
|
<member name="M:Milimoe.FunGame.Core.Api.Transmittal.DataRequest.AddRequestData(System.String,System.Object)">
|
||||||
<summary>
|
<summary>
|
||||||
@ -1378,19 +1384,37 @@
|
|||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequest(Milimoe.FunGame.Core.Library.Constant.GamingType)">
|
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.DataRequestType)">
|
||||||
|
<summary>
|
||||||
|
基于本地已连接的Socket创建新的数据请求<para/>
|
||||||
|
加载项专用(<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/> / <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/>)
|
||||||
|
</summary>
|
||||||
|
<param name="RequestType"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
||||||
|
</member>
|
||||||
|
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewLongRunningDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.DataRequestType)">
|
||||||
|
<summary>
|
||||||
|
基于本地已连接的Socket创建长时间运行的数据请求
|
||||||
|
加载项专用(<see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.Plugin"/> / <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/>)
|
||||||
|
</summary>
|
||||||
|
<param name="RequestType"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
||||||
|
</member>
|
||||||
|
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.GamingType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的Socket创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
基于本地已连接的Socket创建新的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
||||||
此方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
加载项专用:此方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
||||||
</summary>
|
</summary>
|
||||||
<param name="GamingType"></param>
|
<param name="GamingType"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
<exception cref="T:Milimoe.FunGame.ConnectFailedException"></exception>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewLongRunningDataRequest(Milimoe.FunGame.Core.Library.Constant.GamingType)">
|
<member name="M:Milimoe.FunGame.Core.Controller.RunTimeController.NewLongRunningDataRequestForAddon(Milimoe.FunGame.Core.Library.Constant.GamingType)">
|
||||||
<summary>
|
<summary>
|
||||||
基于本地已连接的Socket创建长时间运行的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
基于本地已连接的Socket创建长时间运行的局内(<see cref="T:Milimoe.FunGame.Core.Model.Gaming"/>)数据请求<para/>
|
||||||
此方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
加载项专用:此方法是给 <see cref="T:Milimoe.FunGame.Core.Library.Common.Addon.GameModule"/> 提供的
|
||||||
</summary>
|
</summary>
|
||||||
<param name="GamingType"></param>
|
<param name="GamingType"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
@ -31,8 +31,8 @@ namespace Milimoe.FunGame.Core.Library.Common.Network
|
|||||||
this.ServerPort = ServerPort;
|
this.ServerPort = ServerPort;
|
||||||
if (MaxConnection <= 0)
|
if (MaxConnection <= 0)
|
||||||
{
|
{
|
||||||
OnlineClients = new();
|
OnlineClients = [];
|
||||||
OnlineUsers = new();
|
OnlineUsers = [];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -33,6 +33,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
public const int MaxConnection_1C2G = 10;
|
public const int MaxConnection_1C2G = 10;
|
||||||
public const int MaxConnection_2C2G = 20;
|
public const int MaxConnection_2C2G = 20;
|
||||||
public const int MaxConnection_4C4G = 40;
|
public const int MaxConnection_4C4G = 40;
|
||||||
|
public const string Plugins_Mark = "plugins_mark";
|
||||||
|
|
||||||
public const string Socket = "Socket";
|
public const string Socket = "Socket";
|
||||||
public const string Unknown = "Unknown";
|
public const string Unknown = "Unknown";
|
||||||
|
@ -144,8 +144,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
{
|
{
|
||||||
Client,
|
Client,
|
||||||
Server,
|
Server,
|
||||||
Client_Plugin,
|
Addon
|
||||||
Server_Plugin
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorIPAddressType
|
public enum ErrorIPAddressType
|
||||||
|
@ -18,9 +18,9 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
|
|
||||||
public int GetReadyPlayerCount(string roomid) => GetReadyPlayerList(roomid).Count;
|
public int GetReadyPlayerCount(string roomid) => GetReadyPlayerList(roomid).Count;
|
||||||
|
|
||||||
public List<Room> ListRoom => _List.Values.ToList();
|
public List<Room> ListRoom => [.. _List.Values];
|
||||||
|
|
||||||
public List<string> ListRoomID => _List.Keys.ToList();
|
public List<string> ListRoomID => [.. _List.Keys];
|
||||||
|
|
||||||
public List<User> GetPlayerList(string roomid) => _PlayerList.TryGetValue(roomid, out List<User>? user) ? user : [];
|
public List<User> GetPlayerList(string roomid) => _PlayerList.TryGetValue(roomid, out List<User>? user) ? user : [];
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerator GetEnumerator()
|
public IEnumerator<Room> GetEnumerator()
|
||||||
{
|
{
|
||||||
foreach (Room room in ListRoom)
|
foreach (Room room in ListRoom)
|
||||||
{
|
{
|
||||||
@ -120,12 +120,9 @@ namespace Milimoe.FunGame.Core.Model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator<Room> IEnumerable<Room>.GetEnumerator()
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
{
|
{
|
||||||
foreach (Room room in ListRoom)
|
return GetEnumerator();
|
||||||
{
|
|
||||||
yield return room;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using Milimoe.FunGame.Core.Entity;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Core.Service
|
namespace Milimoe.FunGame.Core.Service
|
||||||
{
|
{
|
||||||
internal class ModelManager<T>
|
internal class ModelManager<T> : IEnumerable<T>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 目前的Model数量
|
/// 目前的Model数量
|
||||||
@ -17,7 +19,7 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 可参与高并发的字典,但添加效率较低
|
/// 可参与高并发的字典,但添加效率较低
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private ConcurrentDictionary<string, T> Models { get; } = new();
|
private ConcurrentDictionary<string, T> Models { get; } = [];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Init ModelManager
|
/// Init ModelManager
|
||||||
@ -103,7 +105,20 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal List<T> GetList()
|
internal List<T> GetList()
|
||||||
{
|
{
|
||||||
return Models.Values.ToList();
|
return [.. Models.Values];
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<T> GetEnumerator()
|
||||||
|
{
|
||||||
|
foreach (T instance in Models.Values)
|
||||||
|
{
|
||||||
|
yield return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user