예제 #1
0
        /// <summary>
        /// Register new user
        /// </summary>
        /// <param name="user"></param>
        /// <returns>user id</returns>
        public int RegisterUser(VirtualServerEntity.User user)
        {
            // create object
            var newUser = new Dictionary <UserInfo, string>();

            foreach (var ui in user.Info)
            {
                newUser.Add((UserInfo)ui.Key, ui.Value);
            }

            // register user
            var id = _server.registerUser(newUser);

            // update id
            user.Id = id;

            // set user texture
            if (user.Texture.Length > 0)
            {
                _server.setTexture(id, user.Texture);
            }

            // add in cache
            _entity.Users.Add(id, user);

            return(id);
        }
예제 #2
0
        /// <summary>
        /// Return registered user by id
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="getInfo">Include user info</param>
        /// <param name="getTexture">Return user texture or not</param>
        /// <param name="cache"></param>
        /// <returns></returns>
        public VirtualServerEntity.User GetUser(int userId, bool getInfo = true, bool getTexture = false, bool cache = false)
        {
            if (!cache || !_entity.Users.ContainsKey(userId))
            {
                // create object
                var user = new VirtualServerEntity.User()
                {
                    Id = userId,
                };
                if (getTexture)
                {
                    user.Texture = _server.getTexture(userId);
                }


                if (getInfo)
                {
                    // get from remote
                    var userInfo = _server.getRegistration(userId);
                    if (userInfo == null)
                    {
                        return(null);
                    }

                    foreach (var @i in userInfo)
                    {
                        user.Info.Add((VirtualServerEntity.User.UserInfo)@i.Key, @i.Value);
                    }
                }

                // update in cache
                if (_entity.Users.ContainsKey(userId))
                {
                    _entity.Users[userId] = user;
                }
                else
                {
                    _entity.Users.Add(userId, user);
                }
            }

            return(_entity.Users[userId]);
        }
예제 #3
0
        /// <summary>
        /// Update exist user
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="user">with updated info</param>
        public void UpdateUserInfo(VirtualServerEntity.User user)
        {
            var newInfo = new Dictionary <UserInfo, string>();

            foreach (var it in user.Info)
            {
                newInfo.Add((Murmur.UserInfo)it.Key, it.Value);
            }

            // set user info
            _server.updateRegistration(user.Id, newInfo);

            // update in cache
            if (_entity.Users.ContainsKey(user.Id))
            {
                _entity.Users[user.Id] = user;
            }
            else
            {
                _entity.Users.Add(user.Id, user);
            }
        }