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 } }