using Google.Protobuf; using ServerCore; using ServerBase; using ServerCommon; namespace GameServer.PacketHandler; [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.GetFriendListReq), typeof(GetFriendsPacketHandler), typeof(GameLoginListener))] public class GetFriendsPacketHandler : PacketRecvHandler { public override async Task onProcessPacket(ISession session, IMessage recvMessage) { var owner = session as Player; NullReferenceCheckHelper.throwIfNull(owner, () => "Player is null !!!"); var friend_agent_action = owner.getEntityAction(); NullReferenceCheckHelper.throwIfNull(friend_agent_action, () => $"FriendAgentAction is null !!! - player:{owner.toBasicString()}"); var result = await friend_agent_action.loadFriends(); if (result.isFail()) { send_GS2C_ACK_FRIENDS(owner, result); return result; } var friend_infos = await friend_agent_action.getFriendsInfo(); send_GS2C_ACK_FRIENDS(owner, friend_infos, result); return result; } public static Result send_GS2C_ACK_FRIENDS(Player owner, List friendInfos, Result result) { var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.ErrorCode = result.ErrorCode; ack_packet.Response.GetFriendListRes = new ClientToGameRes.Types.GetFriendListRes(); ack_packet.Response.GetFriendListRes.FriendList.AddRange(friendInfos); if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet)) { string err_msg = $"send_GS2C_ACK_FRIENDS Fail !!! : owner:{owner.toBasicString()}"; result.setFail(ServerErrorCode.ProudNetException, err_msg); Log.getLogger().error(result.toBasicString()); return result; } return result; } public static Result send_GS2C_ACK_FRIENDS(Player owner, Result result) { var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.ErrorCode = result.ErrorCode; ack_packet.Response.GetFriendListRes = new ClientToGameRes.Types.GetFriendListRes(); if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet)) { string err_msg = $"send_GS2C_ACK_FRIENDS Fail !!! : owner:{owner.toBasicString()}"; result.setFail(ServerErrorCode.ProudNetException, err_msg); Log.getLogger().error(result.toBasicString()); return result; } return result; } }