private AccountInfo RefreshUserInfo(string userName) { string key = userName.ToUpper(); DataRow accountInfo = this.m_IAccountStorage.GetAccountInfo(userName); if (accountInfo != null) { AccountInfo info; List <FriendInfo> list = new List <FriendInfo>(); List <FriendInfo> list2 = new List <FriendInfo>(); FriendInfo creator = null; foreach (DataRow row2 in this.m_IAccountStorage.GetFriends(userName)) { string name = row2["Name"] as string; DateTime renewTime = (DateTime)row2["RenewTime"]; FriendInfo item = new FriendInfo(name, renewTime, Convert.ToInt64(row2["Relationship"]), Convert.ToInt64(row2["Type"])); list.Add(item); long num = Convert.ToInt64(row2["Relationship"]); if ((num <= 3L) && (num >= 2L)) { switch (((int)num)) { case 2: list2.Add(item); break; case 3: list2.Add(item); creator = item; break; } } } if (this.m_UserInfoCache.ContainsKey(key)) { info = this.m_UserInfoCache[key] as AccountInfo; info.Reset(accountInfo["Name"] as string, accountInfo["NickName"] as string, Convert.ToInt64(accountInfo["Key"]), Convert.ToInt64(accountInfo["Type"]), this.m_IAccountStorage.GetUserRoles(userName), list.ToArray(), (Convert.ToInt64(accountInfo["Type"]) == 1L) ? list2.ToArray() : null, creator, accountInfo["EMail"] as string, accountInfo["InviteCode"] as string, Convert.ToInt64(accountInfo["AcceptStrangerIM"]) != 0L, Convert.ToInt64(accountInfo["MsgFileLimit"]), Convert.ToInt64(accountInfo["MsgImageLimit"]), Convert.ToInt64(accountInfo["DiskSize"]), Convert.ToInt64(accountInfo["IsTemp"]), (DateTime)accountInfo["RegisterTime"], accountInfo["HomePage"] as string, accountInfo["Password"] as string, accountInfo); return(info); } info = new AccountInfo(accountInfo["Name"] as string, accountInfo["NickName"] as string, Convert.ToInt64(accountInfo["Key"]), Convert.ToInt64(accountInfo["Type"]), this.m_IAccountStorage.GetUserRoles(userName), list.ToArray(), (Convert.ToInt64(accountInfo["Type"]) == 1L) ? list2.ToArray() : null, creator, accountInfo["EMail"] as string, accountInfo["InviteCode"] as string, Convert.ToInt64(accountInfo["AcceptStrangerIM"]) != 0L, Convert.ToInt64(accountInfo["MsgFileLimit"]), Convert.ToInt64(accountInfo["MsgImageLimit"]), Convert.ToInt64(accountInfo["DiskSize"]), Convert.ToInt64(accountInfo["IsTemp"]), (DateTime)accountInfo["RegisterTime"], accountInfo["HomePage"] as string, accountInfo["Password"] as string, accountInfo); if (this.m_List.Count >= 2) { AccountInfo info4 = this.m_List.First.Value; this.m_UserInfoCache.Remove(info4.Name.ToUpper()); this.m_UserInfoCacheByID.Remove(info4.ID); this.m_List.RemoveFirst(); } this.m_UserInfoCache[key] = info; this.m_UserInfoCacheByID[info.ID] = info; this.m_List.AddLast(info.ListNode); return(info); } return(null); }
private void GetFriends() { lock (m_FriendsLock) { if (m_Friends == null) { List<FriendInfo> friends = new List<FriendInfo>(), managers = new List<FriendInfo>(); FriendInfo creator = null; foreach (DataRow row in AccountImpl.Instance.GetFriends(m_Name)) { string name = row["Name"] as string; DateTime renewTime = (DateTime)row["RenewTime"]; FriendInfo fi = new FriendInfo(name, Convert.ToInt32(row["ID"]), Convert.ToInt32(row["Relationship"]), Convert.ToInt32(row["Type"])); friends.Add(fi); switch (Convert.ToInt32(row["Relationship"])) { case 2: managers.Add(fi); break; case 3: managers.Add(fi); creator = fi; break; } } m_Friends = friends.ToArray(); m_FriendIndex = new Dictionary<int, FriendInfo>(); foreach (FriendInfo friend in friends) { m_FriendIndex.Add(friend.ID, friend); } m_Managers = new Hashtable(); if (m_Type != 1) { foreach (FriendInfo friend in managers) { m_Managers.Add(friend.Name.ToUpper(), friend); } } } } }
public void Reset(DataRow data) { lock (m_Lock) { m_Name = Convert.ToString(data["Name"]); m_NickName = Convert.ToString(data["NickName"]); m_ID = Convert.ToInt32(data["ID"]); m_Type = Convert.ToInt32(data["Type"]); m_EMail = Convert.ToString(data["EMail"]); m_HeadIMG = Convert.ToString(data["HeadIMG"]); m_Remark = Convert.ToString(data["Remark"]); m_Tel = Convert.ToString(data["Tel"]); m_Mobile = Convert.ToString(data["Mobile"]); m_IsDeleted = (Convert.ToInt32(data["IsDeleted"]) == 1); m_SubType = Convert.ToInt32(data["SubType"]); m_AcceptStrangerIM = Convert.ToInt32(data["AcceptStrangerIM"]) != 0; m_IMFileLimit = Convert.ToInt32(data["MsgFileLimit"]); m_IMImageLimit = Convert.ToInt32(data["MsgImageLimit"]); m_IsTemp = (Convert.ToInt32(data["IsTemp"]) != 0); m_IsAdmin = (Convert.ToInt32(data["IsAdmin"]) != 0); m_HomePage = Convert.ToString(data["HomePage"]); m_DiskSize = Convert.ToInt32(data["DiskSize"]); m_RegisterTime = Convert.ToDateTime(data["RegisterTime"]); m_Creator = (m_Type == 0 ? null : new FriendInfo(Convert.ToString(data["Creator"]), Convert.ToInt32(data["CreatorID"]), 3, 0)); } lock (m_FriendsLock) { m_FriendIndex = null; m_Managers = null; m_Friends = null; } }
public AccountInfo(string name, string nickname, long id, long type, string[] roles, FriendInfo[] friends, FriendInfo[] managers, FriendInfo creator, string email, string inviteCode, bool acceptStrangerIM, long imf_limite, long imimage_limit, long diskSize, long isTemp, DateTime registerTime, string homePage, string pwd, DataRow data) { this._detailsJson = new Details(this); this.m_ListNode = new LinkedListNode <AccountInfo>(this); this.Reset(name, nickname, id, type, roles, friends, managers, creator, email, inviteCode, acceptStrangerIM, imf_limite, imimage_limit, diskSize, isTemp, registerTime, homePage, pwd, data); }
public void Reset(string name, string nickname, long id, long type, string[] roles, FriendInfo[] friends, FriendInfo[] managers, FriendInfo creator, string email, string inviteCode, bool acceptStrangerIM, long imf_limite, long imimage_limit, long diskSize, long isTemp, DateTime registerTime, string homePage, string pwd, DataRow data) { lock (this.m_Lock) { this.m_FriendIndex = new Hashtable(); this.m_Managers = new Hashtable(); this.m_Name = name; this.m_NickName = nickname; this.m_ID = id; this.m_Type = type; this.m_Roles = roles; this.m_Friends = friends; this.m_Creator = creator; this.m_EMail = email; this.m_InviteCode = inviteCode; if (data["HeadIMG"] != null) { this.m_HeadIMG = data["HeadIMG"].ToString(); } else { this.m_HeadIMG = ""; } if (data["Remark"] != null) { this.m_Remark = data["Remark"].ToString(); } else { this.m_Remark = "这个人很懒,什么都没留下."; } if (data.Table.Columns.Contains("ParentId") && (data["ParentId"] != null)) { this.m_ParentId = data["ParentId"].ToString(); } if (data.Table.Columns.Contains("DType") && (data["DType"] != null)) { this.m_DType = data["DType"].ToString(); } this.m_Password = pwd; if (data.Table.Columns.Contains("Phone") && (data["Phone"] != null)) { this.m_Phone = data["Phone"].ToString(); } if (data.Table.Columns.Contains("TelPhone") && (data["TelPhone"] != null)) { this.m_TelPhone = data["TelPhone"].ToString(); } if (data.Table.Columns.Contains("MobilePhone") && (data["MobilePhone"] != null)) { this.m_MobilePhone = data["MobilePhone"].ToString(); } if (data.Table.Columns.Contains("IsExitGroup") && (data["IsExitGroup"] != null)) { this.m_IsExitGroup = Convert.ToInt64(data["IsExitGroup"]) == 1L; } this.m_AcceptStrangerIM = acceptStrangerIM; this.m_IMFileLimit = imf_limite; this.m_IMImageLimit = imimage_limit; this.m_IsTemp = isTemp != 0L; this.m_HomePage = homePage; this.m_DiskSize = diskSize; if (friends != null) { foreach (FriendInfo info in friends) { this.m_FriendIndex.Add(info.Name.ToUpper(), info); } } if (managers != null) { foreach (FriendInfo info in managers) { this.m_Managers.Add(info.Name.ToUpper(), info); } } this.m_RegisterTime = registerTime; } }