示例#1
0
        public ServerMessage ComposeUpdateList()
        {
            lock (mInnerUpdates)
            {
                List <MessengerUpdate> UpdateInfo = new List <MessengerUpdate>();

                using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
                {
                    foreach (uint FriendId in mInner)
                    {
                        if (!mInnerUpdates.ContainsKey(FriendId))
                        {
                            continue;
                        }

                        CharacterInfo Info = CharacterInfoLoader.GetCharacterInfo(MySqlClient, FriendId);

                        if (Info == null)
                        {
                            continue;
                        }

                        UpdateInfo.Add(new MessengerUpdate(mInnerUpdates[FriendId], Info));
                    }

                    mInnerUpdates.Clear();
                }

                return(MessengerUpdateListComposer.Compose(UpdateInfo));
            }
        }
示例#2
0
        private static void OnFriendRemove(Session Session, ClientMessage Message)
        {
            int Amount = Message.PopWiredInt32();

            // Precaution: limit queries to 50
            if (Amount > 50)
            {
                Amount = 50;
            }

            List <MessengerUpdate> LocalUpdates = new List <MessengerUpdate>();

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                for (int i = 0; i < Amount; i++)
                {
                    uint FriendId = Message.PopWiredUInt32();

                    if (DestroyFriendship(MySqlClient, Session.CharacterId, FriendId))
                    {
                        Session.MessengerFriendCache.RemoveFromCache(FriendId);
                        LocalUpdates.Add(new MessengerUpdate(-1, CharacterInfoLoader.GenerateNullCharacter(FriendId)));

                        Session TargetSession = SessionManager.GetSessionByCharacterId(FriendId);;

                        if (TargetSession != null)
                        {
                            TargetSession.MessengerFriendCache.RemoveFromCache(Session.CharacterId);
                            TargetSession.SendData(MessengerUpdateListComposer.Compose(new List <MessengerUpdate>()
                            {
                                new MessengerUpdate(-1, CharacterInfoLoader.GenerateNullCharacter(Session.CharacterId))
                            }));
                        }
                    }
                }
            }

            Session.SendData(MessengerUpdateListComposer.Compose(LocalUpdates));
        }