using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using GameServer; namespace GameServer.PacketHandler; [PacketHandler("", typeof(ServerMessage.Types.ReceiveMailNoti), typeof(NtfReceiveMailMQPacketHandler), typeof(RabbitMQ4Game))] public class NtfReceiveMailMQPacketHandler : PacketRecvHandler { public override async Task onProcessPacket(ISession session, IMessage recvMessage) { var msg = recvMessage as ServerMessage; ArgumentNullException.ThrowIfNull(msg); var server_logic = GameServerApp.getServerLogic(); var player_manager = server_logic.getPlayerManager(); ArgumentNullException.ThrowIfNull(server_logic); ArgumentNullException.ThrowIfNull(player_manager); var result = new Result(); if (player_manager.tryGetUserByPrimaryKey(msg.ReceiveMailNoti.AccountGuid, out var found_user) == false) { var err_msg = $"Failed to tryGetUserByPrimaryKey() !!!, Not found : AccountGuid:{msg.ReceiveMailNoti.AccountGuid}"; result.setFail(ServerErrorCode.UserNotLogin, err_msg); Log.getLogger().error(result.toBasicString()); return result; } var mail_action = found_user.getEntityAction(); NullReferenceCheckHelper.throwIfNull(mail_action, () => "mail_action is null !!!"); mail_action.NewReceivedMail(); await QuestManager.It.QuestCheck(found_user, new QuestMail(EQuestEventTargetType.MAIL, EQuestEventNameType.RECEIVED, "")); return result; } }