using System.Collections.Generic;
using MessagePack;
#if Server
using Server.Core;
#else
using GameFramework;
#endif
namespace GameMessage
{
[Message(MessageCode.ConnectAuthCode)]
[MessagePackObject]
public class ConnectAuthCode : MessageData
{
///
/// 验证码
///
[Key(0)] public byte[] AuthCode;
#if Server
public static ConnectAuthCode Create(byte[] authCode)
{
ConnectAuthCode connectAuthCode = ReferencePool.Fetch();
connectAuthCode.AuthCode = authCode;
return connectAuthCode;
}
public override void Dispose()
{
this.AuthCode = null;
ReferencePool.Recycle(this);
}
#endif
}
[Message(MessageCode.ConnectSYN)]
[MessagePackObject]
public class ConnectSyn : MessageData
{
///
/// 验证码
///
[Key(0)] public byte[] AuthCode;
#if GameClient
public static ConnectSyn Create(byte[] authCode)
{
ConnectSyn connectSyn = ReferencePool.Acquire();
connectSyn.AuthCode = authCode;
return connectSyn;
}
public override void Clear()
{
AuthCode = null;
}
#endif
}
[Message(MessageCode.ConnectACK)]
[MessagePackObject]
public class ConnectAck : MessageData
{
///
/// 链接结果
///
[Key(0)] public bool Result;
#if Server
public static ConnectAck Create(bool result)
{
ConnectAck connectAck = ReferencePool.Fetch();
connectAck.Result = result;
return connectAck;
}
public override void Dispose()
{
ReferencePool.Recycle(this);
}
#endif
}
[Message(MessageCode.ConnectFin)]
[MessagePackObject]
public class ConnectFin : MessageData
{
#if GameClient
public static ConnectFin Create()
{
return ReferencePool.Acquire();
}
#endif
}
[Message(MessageCode.ServerFin)]
[MessagePackObject]
public class ServerFin : MessageData
{
///
/// 正常断开
///
public const int FinCode_Normal = 0;
///
/// 别处登录
///
public const int FinCode_RemoteLogin = 1;
[Key(0)] public int FinCode;
#if Server
public static ServerFin Create(int finCode)
{
ServerFin serverFin = ReferencePool.Fetch();
serverFin.FinCode = finCode;
return serverFin;
}
public override void Dispose()
{
ReferencePool.Recycle(this);
}
#endif
}
///
/// 心跳包
///
[Message(MessageCode.RouterHeartRequest)]
[MessagePackObject]
public class RouterHeartRequest : MessageData
{
///
/// 发送时间
///
[Key(0)] public long SendTime;
#if GameClient
public static RouterHeartRequest Create(long sendTime)
{
RouterHeartRequest request = ReferencePool.Acquire();
request.SendTime = sendTime;
return request;
}
#endif
}
[Message(MessageCode.RouterHeartResponse)]
[MessagePackObject]
public class RouterHeartResponse : MessageData
{
///
/// 发送时间
///
[Key(0)] public long SendTime;
///
/// 服务器链接信息
///
[Key(1)] public List ServerInfos;
#if Server
public static RouterHeartResponse Create()
{
RouterHeartResponse routerHeartResponse = ReferencePool.Fetch();
return routerHeartResponse;
}
public override void Dispose()
{
//if (IsFromPool)
{
if (ServerInfos != null)
{
foreach (var info in ServerInfos)
{
info.Dispose();
}
}
ServerInfos = null;
}
ReferencePool.Recycle(this);
}
#endif
}
///
/// 服务器链接信息
///
[MessagePackObject]
public class ServerConnectInfo
#if Server
: IReference
#endif
{
[IgnoreMember] public bool IsFromPool { get; set; }
[IgnoreMember] public long ReferenceId { get; set; }
///
/// 模块Id
///
[Key(0)] public byte ModuleId;
///
/// 模块数量
///
[Key(1)] public byte NodeNum;
///
/// 模块状态
///
[Key(2)] public byte State;
///
/// 链接中
///
public const byte Connecting = 0;
///
/// 连上了
///
public const byte Open = 1;
///
/// 链接已关闭
///
public const byte Close = 2;
#if Server
public static ServerConnectInfo Create()
{
return ReferencePool.Fetch();
}
public void Dispose()
{
ReferencePool.Recycle(this);
}
#endif
}
}