/// <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); }
/// <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; }