using Fantasy;
using Fantasy.Async;
using Fantasy.Network;
using Fantasy.Platform.Net;
using NB.Chat;
using NB.Game;
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
namespace NB.Gate;
public static class GateLoginHelper
{
#region 上线
///
/// 网关通知其他服务器上线
///
///
public static async FTask Online(GateUnit gateUnit)
{
if (gateUnit == null)
{
return ErrorCode.ErrArgs;
}
Session session = gateUnit.Session;
if (session == null)
{
return ErrorCode.ErrArgs;
}
var gateUnitSessionComponent = session.GetComponent();
if (gateUnitSessionComponent == null)
{
gateUnitSessionComponent = session.AddComponent();
}
var routeComponent = session.GetComponent();
if (routeComponent == null)
{
session.AddComponent();
}
gateUnitSessionComponent.AccountID = gateUnit.AccountID;
gateUnitSessionComponent.SessionId = session.RuntimeId;
return await gateUnit.Online(RouteType.GameRoute, RouteType.SocialRoute);
}
#endregion
#region 下线
///
/// 网关通知其他服务器下线
///
///
///
public static async FTask Offline(GateUnit gateUnit, long sessionId)
{
//通知服务器下线
Log.Info($"断线的session id={sessionId}");
var ret = await gateUnit.Offline(sessionId, RouteType.GameRoute, RouteType.SocialRoute);
return ret;
}
#endregion
}