mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-23 04:29:36 +08:00
87 lines
2.3 KiB
C#
87 lines
2.3 KiB
C#
using Milimoe.FunGame.Core.Interface.Base;
|
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
|
using Milimoe.FunGame.Core.Service;
|
|
|
|
namespace Milimoe.FunGame.Core.Library.Common.Architecture
|
|
{
|
|
public class BaseModel : ISocketHandler, IDisposable
|
|
{
|
|
/// <summary>
|
|
/// 接收到的SocketObject实例
|
|
/// </summary>
|
|
protected virtual SocketObject Work { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否处于等待服务器响应的状态
|
|
/// </summary>
|
|
protected virtual bool Working { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// Socket
|
|
/// </summary>
|
|
private readonly Socket _Socket;
|
|
|
|
/// <summary>
|
|
/// 继承请调用base构造
|
|
/// </summary>
|
|
/// <param name="socket">Socket</param>
|
|
public BaseModel(Socket? socket)
|
|
{
|
|
if (socket != null)
|
|
{
|
|
_Socket = socket;
|
|
socket.BindEvent(new SocketManager.SocketReceiveHandler(SocketHandler));
|
|
}
|
|
else throw new SocketCreateReceivingException();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 继承请重写此方法
|
|
/// </summary>
|
|
/// <param name="SocketObject">SocketObject</param>
|
|
public virtual void SocketHandler(SocketObject SocketObject)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断是否已经Disposed
|
|
/// </summary>
|
|
private bool IsDisposed = false;
|
|
|
|
/// <summary>
|
|
/// 公开的Dispose方法
|
|
/// </summary>
|
|
public void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭时
|
|
/// </summary>
|
|
/// <param name="Disposing"></param>
|
|
protected void Dispose(bool Disposing)
|
|
{
|
|
if (!IsDisposed)
|
|
{
|
|
if (Disposing)
|
|
{
|
|
_Socket.BindEvent(new SocketManager.SocketReceiveHandler(SocketHandler), true);
|
|
}
|
|
}
|
|
IsDisposed = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 调用Socket.Send()前,请设置为等待状态
|
|
/// </summary>
|
|
protected void SetWorking()
|
|
{
|
|
Working = true;
|
|
Work = default;
|
|
}
|
|
}
|
|
}
|