6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) + game logic (GameFix/GameDAL/ServerData) + network layer (NetWorkMessage) + data layer (ObjectModel) + utilities (MrWu/Core/Config/CloudAPI/dll) + adapters (zyxAdapter/base) .NET 8.0 C# solution, 16 projects, 958 source files
82 lines
2.1 KiB
C#
82 lines
2.1 KiB
C#
using System;
|
||
using System.Threading;
|
||
using Server.Net;
|
||
|
||
namespace Server
|
||
{
|
||
/// <summary>
|
||
/// UserNet 是 UserNetActor 管理, 与 主线程的 UserSession 对应, id 和 instanceId 用来查找对应的 Session
|
||
/// </summary>
|
||
public class UserNetSession : BaseSession
|
||
{
|
||
/// <summary>
|
||
/// 实例ID 如果Id 改变就不能用了,不再是之前的用户
|
||
/// </summary>
|
||
public long InstanceId { get; set; }
|
||
|
||
public byte Ver;
|
||
|
||
public bool IsDisConnected { get; set; }
|
||
|
||
/// <summary>
|
||
/// Fin 就是链接断了 Idle 就是还没绑定用户 从收到链接请求,到发送中断确认之间都是Using
|
||
/// </summary>
|
||
public UserSessionState State = UserSessionState.Idle;
|
||
|
||
private static long IdGenerate;
|
||
|
||
public int ForceDisConnectCode { get; set; }
|
||
|
||
private long GetInstanceId()
|
||
{
|
||
if (InstanceId >= long.MaxValue)
|
||
{
|
||
IdGenerate = 0;
|
||
}
|
||
|
||
IdGenerate++;
|
||
|
||
return IdGenerate;
|
||
}
|
||
|
||
public UserNetSession(long id, TService service, Action<long> disposeAction) : base(id, service,disposeAction)
|
||
{
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 链接确认 建立链接就生成新的
|
||
/// </summary>
|
||
public void ConnectAck()
|
||
{
|
||
InstanceId = GetInstanceId();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 收到链接包 - 回链接成功,表示建立连接成功 标志为使用中
|
||
* 如果收到断开连接包,则触发用户断线的事件 标志为空闲
|
||
* 如果是真断开,判断状态如果是使用中,也要出发用户断线事件, 标志为断开
|
||
*
|
||
*
|
||
*
|
||
*
|
||
*/
|
||
public enum UserSessionState
|
||
{
|
||
/// <summary>
|
||
/// 空闲
|
||
/// </summary>
|
||
Idle,
|
||
|
||
/// <summary>
|
||
/// 使用中
|
||
/// </summary>
|
||
Using,
|
||
|
||
/// <summary>
|
||
/// 断开中
|
||
/// </summary>
|
||
Fin,
|
||
}
|
||
} |