mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-12-05 16:16:33 +00:00
添加BaseServerModel,修改ThreadManager
This commit is contained in:
parent
34379df886
commit
df8ea4a8cc
@ -1,5 +1,6 @@
|
||||
using Milimoe.FunGame.Core.Interface.Base;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Library.Server;
|
||||
using Milimoe.FunGame.Core.Service;
|
||||
|
||||
namespace Milimoe.FunGame.Core.Library.Common.Network
|
||||
@ -61,7 +62,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Network
|
||||
throw new SocketGetClientException();
|
||||
}
|
||||
|
||||
public bool AddClient(string ClientName, Task t)
|
||||
public bool AddClient(string ClientName, BaseModel t)
|
||||
{
|
||||
return PlayerThreads.Add(ClientName, t);
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
||||
// Const
|
||||
public const int MaxRetryTimes = 20;
|
||||
public const int MaxTask_1C2G = 10;
|
||||
public const int MaxTask_General = 20;
|
||||
public const int MaxThread_General = 20;
|
||||
public const int MaxTask_4C4G = 40;
|
||||
}
|
||||
}
|
||||
|
||||
19
FunGame.Core/Library/Server/BaseServerModel.cs
Normal file
19
FunGame.Core/Library/Server/BaseServerModel.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Collections.Concurrent;
|
||||
using Milimoe.FunGame.Core.Library.Server;
|
||||
|
||||
namespace Milimoe.FunGame.Core.Service
|
||||
{
|
||||
@ -7,33 +8,33 @@ namespace Milimoe.FunGame.Core.Service
|
||||
/// <summary>
|
||||
/// 最大接受的线程数量
|
||||
/// </summary>
|
||||
private int MaxTask { get; }
|
||||
private int MaxThread { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 可参与高并发的字典,但添加效率较低
|
||||
/// </summary>
|
||||
private ConcurrentDictionary<string, Task> Threads { get; } = new();
|
||||
private ConcurrentDictionary<string, BaseModel> Threads { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Init ThreadManager
|
||||
/// </summary>
|
||||
/// <param name="MaxTask">MaxTask</param>
|
||||
internal ThreadManager(int MaxTask = 0)
|
||||
/// <param name="MaxThread">MaxThread</param>
|
||||
internal ThreadManager(int MaxThread = 0)
|
||||
{
|
||||
if (MaxTask <= 0)
|
||||
this.MaxTask = Library.Constant.General.MaxTask_General;
|
||||
if (MaxThread <= 0)
|
||||
this.MaxThread = Library.Constant.General.MaxThread_General;
|
||||
else
|
||||
{
|
||||
this.MaxTask = MaxTask;
|
||||
this.MaxThread = MaxThread;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取Task对象
|
||||
/// 获取Thread对象
|
||||
/// </summary>
|
||||
/// <param name="name">Task的Key</param>
|
||||
/// <returns>Task对象</returns>
|
||||
internal Task this[string name]
|
||||
/// <param name="name">Thread的Key</param>
|
||||
/// <returns>Thread对象</returns>
|
||||
internal BaseModel this[string name]
|
||||
{
|
||||
get
|
||||
{
|
||||
@ -42,21 +43,21 @@ namespace Milimoe.FunGame.Core.Service
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向线程管理器中添加Task
|
||||
/// 向线程管理器中添加Thread
|
||||
/// </summary>
|
||||
/// <param name="name">Task的Key</param>
|
||||
/// <param name="t">Task对象</param>
|
||||
/// <param name="name">Thread的Key</param>
|
||||
/// <param name="t">Thread对象</param>
|
||||
/// <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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从线程管理器中移除Task
|
||||
/// 从线程管理器中移除Thread
|
||||
/// </summary>
|
||||
/// <param name="name">Task的Key</param>
|
||||
/// <param name="name">Thread的Key</param>
|
||||
/// <returns>True:操作成功</returns>
|
||||
internal bool Remove(string name)
|
||||
{
|
||||
@ -64,24 +65,24 @@ namespace Milimoe.FunGame.Core.Service
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将Task移除,并取得这个Task
|
||||
/// 将Thread移除,并取得这个Thread
|
||||
/// </summary>
|
||||
/// <param name="name">Task的Key</param>
|
||||
/// <param name="t">Task对象</param>
|
||||
/// <returns>被移除的Task</returns>
|
||||
internal bool Remove(string name, ref Task? t)
|
||||
/// <param name="name">Thread的Key</param>
|
||||
/// <param name="t">Thread对象</param>
|
||||
/// <returns>被移除的Thread</returns>
|
||||
internal bool Remove(string name, ref BaseModel? t)
|
||||
{
|
||||
return Threads.TryRemove(name, out t);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将Task移除,并取得这个Task
|
||||
/// 将Thread移除,并取得这个Thread
|
||||
/// </summary>
|
||||
/// <param name="name">Task的Key</param>
|
||||
/// <returns>被移除的Task</returns>
|
||||
internal Task? RemoveAndGet(string name)
|
||||
/// <param name="name">Thread的Key</param>
|
||||
/// <returns>被移除的Thread</returns>
|
||||
internal BaseModel? RemoveAndGet(string name)
|
||||
{
|
||||
Threads.TryRemove(name, out Task? result);
|
||||
Threads.TryRemove(name, out BaseModel? result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user