添加BaseServerModel,修改ThreadManager

This commit is contained in:
Mili 2023-02-25 21:18:57 +08:00
parent 34379df886
commit df8ea4a8cc
4 changed files with 51 additions and 30 deletions

View File

@ -1,5 +1,6 @@
using Milimoe.FunGame.Core.Interface.Base; using Milimoe.FunGame.Core.Interface.Base;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Library.Server;
using Milimoe.FunGame.Core.Service; using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Library.Common.Network namespace Milimoe.FunGame.Core.Library.Common.Network
@ -61,7 +62,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Network
throw new SocketGetClientException(); throw new SocketGetClientException();
} }
public bool AddClient(string ClientName, Task t) public bool AddClient(string ClientName, BaseModel t)
{ {
return PlayerThreads.Add(ClientName, t); return PlayerThreads.Add(ClientName, t);
} }

View File

@ -12,7 +12,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
// Const // Const
public const int MaxRetryTimes = 20; public const int MaxRetryTimes = 20;
public const int MaxTask_1C2G = 10; public const int MaxTask_1C2G = 10;
public const int MaxTask_General = 20; public const int MaxThread_General = 20;
public const int MaxTask_4C4G = 40; public const int MaxTask_4C4G = 40;
} }
} }

View File

@ -0,0 +1,19 @@
using Milimoe.FunGame.Core.Library.Common.Network;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Library.Server
{
public abstract class BaseModel
{
public bool Running = false;
public ClientSocket? Socket = null;
public Task? Task = null;
public string ClientName = "";
public abstract bool Read(ClientSocket socket);
public abstract bool Send(ClientSocket socket, SocketMessageType type, params object[] objs);
public abstract void Start();
}
}

View File

@ -1,4 +1,5 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using Milimoe.FunGame.Core.Library.Server;
namespace Milimoe.FunGame.Core.Service namespace Milimoe.FunGame.Core.Service
{ {
@ -7,33 +8,33 @@ namespace Milimoe.FunGame.Core.Service
/// <summary> /// <summary>
/// 最大接受的线程数量 /// 最大接受的线程数量
/// </summary> /// </summary>
private int MaxTask { get; } private int MaxThread { get; }
/// <summary> /// <summary>
/// 可参与高并发的字典,但添加效率较低 /// 可参与高并发的字典,但添加效率较低
/// </summary> /// </summary>
private ConcurrentDictionary<string, Task> Threads { get; } = new(); private ConcurrentDictionary<string, BaseModel> Threads { get; } = new();
/// <summary> /// <summary>
/// Init ThreadManager /// Init ThreadManager
/// </summary> /// </summary>
/// <param name="MaxTask">MaxTask</param> /// <param name="MaxThread">MaxThread</param>
internal ThreadManager(int MaxTask = 0) internal ThreadManager(int MaxThread = 0)
{ {
if (MaxTask <= 0) if (MaxThread <= 0)
this.MaxTask = Library.Constant.General.MaxTask_General; this.MaxThread = Library.Constant.General.MaxThread_General;
else else
{ {
this.MaxTask = MaxTask; this.MaxThread = MaxThread;
} }
} }
/// <summary> /// <summary>
/// 获取Task对象 /// 获取Thread对象
/// </summary> /// </summary>
/// <param name="name">Task的Key</param> /// <param name="name">Thread的Key</param>
/// <returns>Task对象</returns> /// <returns>Thread对象</returns>
internal Task this[string name] internal BaseModel this[string name]
{ {
get get
{ {
@ -42,21 +43,21 @@ namespace Milimoe.FunGame.Core.Service
} }
/// <summary> /// <summary>
/// 向线程管理器中添加Task /// 向线程管理器中添加Thread
/// </summary> /// </summary>
/// <param name="name">Task的Key</param> /// <param name="name">Thread的Key</param>
/// <param name="t">Task对象</param> /// <param name="t">Thread对象</param>
/// <returns>True操作成功</returns> /// <returns>True操作成功</returns>
internal bool Add(string name, Task t) internal bool Add(string name, BaseModel t)
{ {
if (Threads.Count + 1 > MaxTask) return false; if (Threads.Count + 1 > MaxThread) return false;
return Threads.TryAdd(name, t); return Threads.TryAdd(name, t);
} }
/// <summary> /// <summary>
/// 从线程管理器中移除Task /// 从线程管理器中移除Thread
/// </summary> /// </summary>
/// <param name="name">Task的Key</param> /// <param name="name">Thread的Key</param>
/// <returns>True操作成功</returns> /// <returns>True操作成功</returns>
internal bool Remove(string name) internal bool Remove(string name)
{ {
@ -64,24 +65,24 @@ namespace Milimoe.FunGame.Core.Service
} }
/// <summary> /// <summary>
/// 将Task移除并取得这个Task /// 将Thread移除并取得这个Thread
/// </summary> /// </summary>
/// <param name="name">Task的Key</param> /// <param name="name">Thread的Key</param>
/// <param name="t">Task对象</param> /// <param name="t">Thread对象</param>
/// <returns>被移除的Task</returns> /// <returns>被移除的Thread</returns>
internal bool Remove(string name, ref Task? t) internal bool Remove(string name, ref BaseModel? t)
{ {
return Threads.TryRemove(name, out t); return Threads.TryRemove(name, out t);
} }
/// <summary> /// <summary>
/// 将Task移除并取得这个Task /// 将Thread移除并取得这个Thread
/// </summary> /// </summary>
/// <param name="name">Task的Key</param> /// <param name="name">Thread的Key</param>
/// <returns>被移除的Task</returns> /// <returns>被移除的Thread</returns>
internal Task? RemoveAndGet(string name) internal BaseModel? RemoveAndGet(string name)
{ {
Threads.TryRemove(name, out Task? result); Threads.TryRemove(name, out BaseModel? result);
return result; return result;
} }