Example #1
0
        public DBRoleInfo AddDBRoleInfo(DBRoleInfo dbRoleInfo)
        {
            MyWeakReference weakRef = null;

            lock (this.DictRoleInfos)
            {
                if (this.DictRoleInfos.TryGetValue(dbRoleInfo.RoleID, out weakRef))
                {
                    DBRoleInfo old = weakRef.Target as DBRoleInfo;
                    if (null != old)
                    {
                        return(old);
                    }
                    weakRef.Target = dbRoleInfo;
                }
                else
                {
                    this.DictRoleInfos.Add(dbRoleInfo.RoleID, new MyWeakReference(dbRoleInfo));
                }
            }
            lock (this.DictRoleName2ID)
            {
                string formatedRoleName = Global.FormatRoleName(dbRoleInfo);
                this.DictRoleName2ID[formatedRoleName] = dbRoleInfo.RoleID;
            }
            return(dbRoleInfo);
        }
Example #2
0
        public DBUserInfo FindDBUserInfo(string userID)
        {
            DBUserInfo      dbUserInfo = null;
            MyWeakReference weakRef    = null;

            lock (this.DictUserInfos)
            {
                if (this.DictUserInfos.Count > 0)
                {
                    if (this.DictUserInfos.TryGetValue(userID, out weakRef))
                    {
                        if (weakRef.IsAlive)
                        {
                            dbUserInfo = (weakRef.Target as DBUserInfo);
                        }
                    }
                }
            }
            if (null != dbUserInfo)
            {
                lock (dbUserInfo)
                {
                    dbUserInfo.LastReferenceTicks = DateTime.Now.Ticks / 10000L;
                }
            }
            return(dbUserInfo);
        }
Example #3
0
        /// <summary>
        /// 定位用户信息
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public DBRoleInfo FindDBRoleInfo(int roleID)
        {
            DBRoleInfo      dbRoleInfo = null;
            MyWeakReference weakRef    = null;

            lock (DictRoleInfos)
            {
                if (DictRoleInfos.Count > 0)
                {
                    if (DictRoleInfos.TryGetValue(roleID, out weakRef))
                    {
                        if (weakRef.IsAlive) //判断是否仍在存活
                        {
                            dbRoleInfo = weakRef.Target as DBRoleInfo;
                        }
                    }
                }
            }

            if (null != dbRoleInfo)
            {
                lock (dbRoleInfo)
                {
                    dbRoleInfo.LastReferenceTicks = DateTime.Now.Ticks / 10000;
                }
            }

            return(dbRoleInfo);
        }
Example #4
0
        public void RemoveDBUserInfo(string userID)
        {
            MyWeakReference weakRef = null;

            lock (this.DictUserInfos)
            {
                if (this.DictUserInfos.TryGetValue(userID, out weakRef))
                {
                    weakRef.Target = null;
                }
            }
        }
Example #5
0
        /// <summary>
        /// 添加用户信息到字典中
        /// </summary>
        /// <param name="dbUserInfo"></param>
        public void AddDBUserInfo(DBUserInfo dbUserInfo)
        {
            MyWeakReference weakRef = null;

            lock (DictUserInfos)
            {
                if (DictUserInfos.TryGetValue(dbUserInfo.UserID, out weakRef))
                {
                    weakRef.Target = dbUserInfo;
                }
                else
                {
                    DictUserInfos.Add(dbUserInfo.UserID, new MyWeakReference(dbUserInfo));
                }
            }
        }
Example #6
0
        public List <DBRoleInfo> GetCachingDBRoleInfoListByFaction(int faction)
        {
            List <DBRoleInfo> dbRoleInfoList = new List <DBRoleInfo>();

            lock (this.DictRoleInfos)
            {
                foreach (int key in this.DictRoleInfos.Keys)
                {
                    MyWeakReference weakRef    = this.DictRoleInfos[key];
                    DBRoleInfo      dbRoleInfo = weakRef.Target as DBRoleInfo;
                    if (dbRoleInfo != null && dbRoleInfo.Faction == faction)
                    {
                        dbRoleInfoList.Add(dbRoleInfo);
                    }
                }
            }
            return(dbRoleInfoList);
        }
Example #7
0
        public DBRoleInfo FindDBRoleInfo(ref int roleID)
        {
            if (roleID < 200000)
            {
                int tempRoleID = roleID;
                roleID = SingletonTemplate <RoleMapper> .Instance().GetLocalRoleIDByTempID(tempRoleID);
            }
            DBRoleInfo result;

            if (roleID <= 0)
            {
                result = null;
            }
            else
            {
                DBRoleInfo      dbRoleInfo = null;
                MyWeakReference weakRef    = null;
                lock (this.DictRoleInfos)
                {
                    if (this.DictRoleInfos.Count > 0)
                    {
                        if (this.DictRoleInfos.TryGetValue(roleID, out weakRef))
                        {
                            if (weakRef.IsAlive)
                            {
                                dbRoleInfo = (weakRef.Target as DBRoleInfo);
                            }
                        }
                    }
                }
                if (null != dbRoleInfo)
                {
                    lock (dbRoleInfo)
                    {
                        dbRoleInfo.LastReferenceTicks = DateTime.Now.Ticks / 10000L;
                    }
                }
                result = dbRoleInfo;
            }
            return(result);
        }
Example #8
0
        public void RemoveDBRoleInfo(int roleID)
        {
            string          formatedRoleName = null;
            MyWeakReference weakRef          = null;

            lock (this.DictRoleInfos)
            {
                if (this.DictRoleInfos.TryGetValue(roleID, out weakRef))
                {
                    formatedRoleName = Global.FormatRoleName(weakRef.Target as DBRoleInfo);
                    weakRef.Target   = null;
                }
            }
            lock (this.DictRoleName2ID)
            {
                if (null != formatedRoleName)
                {
                    this.DictRoleName2ID.Remove(formatedRoleName);
                }
            }
        }
Example #9
0
        /// <summary>
        /// 从字典中获取缓存的用户信息
        /// </summary>
        /// <param name="dbRoleInfo"></param>
        public List <DBRoleInfo> GetCachingDBRoleInfoListByFaction(int faction)
        {
            List <DBRoleInfo> dbRoleInfoList = new List <DBRoleInfo>();
            MyWeakReference   weakRef        = null;
            DBRoleInfo        dbRoleInfo     = null;

            lock (DictRoleInfos)
            {
                foreach (var key in DictRoleInfos.Keys)
                {
                    weakRef    = DictRoleInfos[key];
                    dbRoleInfo = weakRef.Target as DBRoleInfo;
                    if (null != dbRoleInfo && dbRoleInfo.Faction == faction)
                    {
                        dbRoleInfoList.Add(dbRoleInfo);
                    }
                }
            }

            return(dbRoleInfoList);
        }
Example #10
0
        public DBUserInfo AddDBUserInfo(DBUserInfo dbUserInfo)
        {
            MyWeakReference weakRef = null;

            lock (this.DictUserInfos)
            {
                if (this.DictUserInfos.TryGetValue(dbUserInfo.UserID, out weakRef))
                {
                    DBUserInfo old = weakRef.Target as DBUserInfo;
                    if (null != old)
                    {
                        return(old);
                    }
                    weakRef.Target = dbUserInfo;
                }
                else
                {
                    this.DictUserInfos.Add(dbUserInfo.UserID, new MyWeakReference(dbUserInfo));
                }
            }
            return(dbUserInfo);
        }
Example #11
0
        /// <summary>
        /// 添加用户信息到字典中
        /// </summary>
        /// <param name="dbRoleInfo"></param>
        public void AddDBRoleInfo(DBRoleInfo dbRoleInfo)
        {
            MyWeakReference weakRef = null;

            lock (DictRoleInfos)
            {
                if (DictRoleInfos.TryGetValue(dbRoleInfo.RoleID, out weakRef))
                {
                    weakRef.Target = dbRoleInfo;
                }
                else
                {
                    DictRoleInfos.Add(dbRoleInfo.RoleID, new MyWeakReference(dbRoleInfo));
                }
            }

            lock (DictRoleName2ID)
            {
                string formatedRoleName = Global.FormatRoleName(dbRoleInfo);
                DictRoleName2ID[formatedRoleName] = dbRoleInfo.RoleID;
            }
        }