/// <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.")); } }
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); }
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)); } }