示例#1
0
        /// <summary>
        /// Return only registered users
        /// </summary>
        /// <param name="getInfo">Include user info</param>
        /// <param name="getTexture">Return user texture or not</param>
        /// <param name="filter">TODO: what is filter?</param>
        /// <param name="cache"></param>
        /// <returns></returns>
        public SerializableDictionary <int, VirtualServerEntity.User> GetUsers(bool getInfo = true, bool getTexture = false, string filter = null, bool cache = false)
        {
            // update cache
            if (!cache || _isNewUsers)
            {
                _isNewUsers = false;

                // clear
                _entity.Users.Clear();

                var users = _server.getRegisteredUsers(filter);

                // add
                foreach (var u in users)
                {
                    try
                    {
                        // insert to _entity.Users is in GetUser method
                        GetUser(u.Key, getInfo, getTexture, cache); // cache = always false
                    }
                    catch
                    {
                        // UNDONE: error reporting - bad user, mostly "SuperUser" (sometimes it may throws on _server.getRegistration(userId);
#if DEBUG
                        Console.WriteLine("[ERROR] bad user " + u.Value);
#endif
                    }
                }
            }
            return(_entity.Users);
        }
        /// <summary>
        /// Return only registered users
        /// </summary>
        /// <param name="getInfo">Include user info</param>
        /// <param name="getTexture">Return user texture or not</param>
        /// <param name="filter">TODO: what is filter?</param>
        /// <param name="cache"></param>
        /// <returns></returns>
        public SerializableDictionary <int, VirtualServerEntity.User> GetUsers(bool getInfo = true, bool getTexture = false, string filter = null, bool cache = false)
        {
            // update cache
            if (!cache || _isNewUsers)
            {
                _isNewUsers = false;

                // clear
                _entity.Users.Clear();

                // add
                foreach (var u in _server.getRegisteredUsers(filter))
                {
                    // insert to _entity.Users is in GetUser method
                    GetUser(u.Key, getInfo, getTexture, cache); // cache = always false
                }
            }
            return(_entity.Users);
        }
        private Agent Add(UUID uuid)
        {
            Agent agent = new Agent(uuid);

            foreach (var user in m_server.getRegisteredUsers(agent.name))
            {
                if (user.Value == agent.name)
                {
                    m_log.DebugFormat("[MurmurVoice] Found previously registered user {0}", user.Value);
                    m_server.unregisterUser(user.Key);
                    //break;
                }
            }

            agent.userid = m_server.registerUser(agent.user_info);
            m_log.DebugFormat("[MurmurVoice] Registered {0} (uid {1}) identified by {2}", agent.uuid.ToString(), agent.userid, agent.pass);

            lock (name_to_agent)
                name_to_agent[agent.name] = agent;

            return(agent);
        }