Пример #1
0
        /// <summary>
        /// (此方法必须在lock住游客列表后方可调用)
        /// </summary>
        /// <param name="guestID"></param>
        /// <param name="oldIP"></param>
        /// <param name="newIP"></param>
        /// <param name="isSpider"></param>
        /// <returns></returns>
        private bool UpdateOnlineGuestIP(string guestID, string oldIP, string newIP, bool isSpider)
        {
            //如果IP未发生变化,无需继续运行下去
            if (oldIP == newIP)
            {
                return(false);
            }

            OnlineGuestsInIp onlineGuestIp;

            //if (onlineGuestIp!=null)

            lock (m_OnlineGuestsInIps_Locker)
            {
                //如果是IP临时发生了变化,那么要从原来的IP中删除
                if (string.IsNullOrEmpty(oldIP) == false)
                {
                    if (m_OnlineGuestsInIps.TryGetValue(oldIP, out onlineGuestIp))
                    {
                        onlineGuestIp.GuestIds.Remove(guestID);

                        if (onlineGuestIp.GuestIds.Count == 0)
                        {
                            m_OnlineGuestsInIps.Remove(oldIP);
                        }
                    }
                }

                if (m_OnlineGuestsInIps.TryGetValue(newIP, out onlineGuestIp))
                {
                    //如果是蜘蛛  那么onlineGuestIp 中所有都是蜘蛛
                    if (isSpider && OnlineSettings.IsShowAllSpidersInSameIP == false && onlineGuestIp.GuestIds.Count > 0)
                    {
                        return(false);
                    }

                    if (OnlineSettings.ShowSameIPCount <= onlineGuestIp.GuestIds.Count)
                    {
                        return(false);
                    }

                    if (onlineGuestIp.GuestIds.Contains(guestID) == false)
                    {
                        onlineGuestIp.GuestIds.Add(guestID);
                    }
                }
                else
                {
                    onlineGuestIp          = new OnlineGuestsInIp();
                    onlineGuestIp.IsSpider = isSpider;
                    onlineGuestIp.GuestIds.Add(guestID);

                    m_OnlineGuestsInIps.Add(newIP, onlineGuestIp);
                }
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// (此方法必须在lock住游客列表后方可调用)
        /// </summary>
        /// <param name="guestID"></param>
        /// <param name="oldIP"></param>
        /// <param name="newIP"></param>
        /// <param name="isSpider"></param>
        /// <returns></returns>
        private bool UpdateOnlineGuestIP(string guestID, string oldIP, string newIP, bool isSpider)
        {
            //如果IP未发生变化,无需继续运行下去
            if (oldIP == newIP)
                return false;

            OnlineGuestsInIp onlineGuestIp;

            //if (onlineGuestIp!=null)

            lock (m_OnlineGuestsInIps_Locker)
            {

                //如果是IP临时发生了变化,那么要从原来的IP中删除
                if (string.IsNullOrEmpty(oldIP) == false)
                {
                    if (m_OnlineGuestsInIps.TryGetValue(oldIP, out onlineGuestIp))
                    {
                        onlineGuestIp.GuestIds.Remove(guestID);

                        if (onlineGuestIp.GuestIds.Count == 0)
                            m_OnlineGuestsInIps.Remove(oldIP);
                    }
                }

                if (m_OnlineGuestsInIps.TryGetValue(newIP, out onlineGuestIp))
                {
                    //如果是蜘蛛  那么onlineGuestIp 中所有都是蜘蛛
                    if (isSpider && OnlineSettings.IsShowAllSpidersInSameIP == false && onlineGuestIp.GuestIds.Count > 0)
                        return false;

                    if (OnlineSettings.ShowSameIPCount <= onlineGuestIp.GuestIds.Count)
                        return false;

                    if (onlineGuestIp.GuestIds.Contains(guestID) == false)
                        onlineGuestIp.GuestIds.Add(guestID);
                }
                else
                {
                    onlineGuestIp = new OnlineGuestsInIp();
                    onlineGuestIp.IsSpider = isSpider;
                    onlineGuestIp.GuestIds.Add(guestID);

                    m_OnlineGuestsInIps.Add(newIP, onlineGuestIp);
                }
            }

            return true;
        }