コード例 #1
0
        /// <summary>
        /// Message Handling of UserService on Provider's side.
        ///
        /// - AuthMsg
        ///
        /// - UserMsg
        ///   - CreateQuery
        ///   - ListQuery
        ///   - UpdateQuery
        ///   - UserDetail
        ///
        /// </summary>
        /// <param name="msg">The received message.</param>
        /// <returns>Response message.</returns>

        public MainMessage HandleMessage(MainMessage msg)
        {
            UserMngMsg userMngMsg = msg.UserMngMsg;

            switch (userMngMsg.UserMngMsgTypeCase)
            {
            case UserMngMsg.UserMngMsgTypeOneofCase.AuthMsg:
                return(HandleAuthMsg(msg));

            case UserMngMsg.UserMngMsgTypeOneofCase.UserMsg:
                return(HandleUserMsg(msg));

            default:
                return(ISystemService.CreateErrorMessage(0, 0, 0,
                                                         this.GetType().Name + ": Cannot handle this type of message."));
            }
        }
コード例 #2
0
ファイル: MainMessage.cs プロジェクト: lukyhruska96/VRLife
        public override int GetHashCode()
        {
            int hash = 1;

            if (MsgId != 0UL)
            {
                hash ^= MsgId.GetHashCode();
            }
            if (senderIdCase_ == SenderIdOneofCase.ServerId)
            {
                hash ^= ServerId.GetHashCode();
            }
            if (senderIdCase_ == SenderIdOneofCase.ClientId)
            {
                hash ^= ClientId.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.SystemMsg)
            {
                hash ^= SystemMsg.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.TickMsg)
            {
                hash ^= TickMsg.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.EventMsg)
            {
                hash ^= EventMsg.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.RoomMsg)
            {
                hash ^= RoomMsg.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.UserMngMsg)
            {
                hash ^= UserMngMsg.GetHashCode();
            }
            if (messageTypeCase_ == MessageTypeOneofCase.AppMsg)
            {
                hash ^= AppMsg.GetHashCode();
            }
            hash ^= (int)senderIdCase_;
            hash ^= (int)messageTypeCase_;
            return(hash);
        }
コード例 #3
0
        private MainMessage HandleUserRequest(MainMessage msg)
        {
            _log.Debug("In HandleUserRequest method.");
            try
            {
                // TODO needs enhancemnets
                UserRequestMsg userRequest = msg.UserMngMsg.UserMsg.UserRequestMsg;
                switch (userRequest.UserRequestTypeCase)
                {
                // create new User
                case UserRequestMsg.UserRequestTypeOneofCase.CreateQuery:
                    _log.Debug("Creating new user: "******"User sucessfuly created.");
                    return(new MainMessage {
                        UserMngMsg = userMngMsg
                    });

                // List users (Username LIKE '%msg.username%')
                case UserRequestMsg.UserRequestTypeOneofCase.ListQuery:
                    _log.Debug("Looking for user like: " + userRequest.ListQuery.Username);
                    UserDetailMsg   userDetail = userRequest.ListQuery;
                    UserDetailMsg[] users      = User.List(userDetail)
                                                 .Select(x => new UserDetailMsg {
                        Password = "", UserId = x.Id, Username = x.Username
                    })
                                                 .ToArray();
                    UserListMsg userList = new UserListMsg();
                    userList.Users.AddRange(users);
                    UserMngMsg userMngMsg1 = new UserMngMsg();
                    userMngMsg1.UserMsg = new UserMsg {
                        UserListMsg = userList
                    };
                    _log.Debug($"Found {users.Length} records.");
                    return(new MainMessage {
                        UserMngMsg = userMngMsg1
                    });

                // Change password, where old and new password are in same filed, separated by newline
                case UserRequestMsg.UserRequestTypeOneofCase.UpdateQuery:
                    _log.Debug("Changing password to user: "******"Password sucessfuly changed.");
                    return(ISystemService.CreateOkMessage(msg.MsgId));

                // show user by its Id
                case UserRequestMsg.UserRequestTypeOneofCase.UserIdDetail:
                    _log.Debug($"Looking for user with id {userRequest.UserIdDetail}");
                    User          user2       = User.Get(userRequest.UserIdDetail);
                    UserDetailMsg userDetail1 = new UserDetailMsg();
                    userDetail1.UserId   = user2.Id;
                    userDetail1.Password = "";
                    userDetail1.Username = user2.Username;
                    UserMsg userMsg1 = new UserMsg();
                    userMsg1.UserDetailMsg = userDetail1;
                    return(new MainMessage {
                        UserMngMsg = new UserMngMsg {
                            UserMsg = userMsg1
                        }
                    });

                case UserRequestMsg.UserRequestTypeOneofCase.UserByClientId:
                    _log.Debug($"Looking for user with client id {userRequest.UserByClientId}");
                    if (msg.SenderIdCase != MainMessage.SenderIdOneofCase.ServerId)
                    {
                        return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Not enough permissions."));
                    }
                    ulong clientId = userRequest.UserByClientId;
                    if (clientId >= (ulong)_clientMachines.Count || _clientMachines[(int)clientId] == null)
                    {
                        return(ISystemService.CreateErrorMessage(msg.MsgId, 0, 0, "Unable to find user with this client ID"));
                    }
                    MainMessage respUserDetail = new MainMessage();
                    respUserDetail.UserMngMsg         = new UserMngMsg();
                    respUserDetail.UserMngMsg.UserMsg = new UserMsg();
                    respUserDetail.UserMngMsg.UserMsg.UserDetailMsg = _clientMachines[(int)clientId].ToMessage();
                    return(respUserDetail);

                default:
                    throw new ErrorMsgException("This message cannot be empty.");
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(ISystemService.CreateErrorMessage(0, 0, 0, ex.Message));
            }
        }