public UserResult UserOnline(Guid guid, int id) { UserResult result = new UserResult(); result.ReturnCode = 1; if (!UserList.ContainsKey(id)) { result.ReturnCode = (byte)ChatProtocol.ErrorCode.InvalidAccountOrPassword; result.DebugMessage = "帳號不存在"; return(result); } lock (this) { // 檢查是否有重複登入 if (UserList[id].guid != Guid.Empty) { result.ReturnCode = (byte)ChatProtocol.ErrorCode.DuplicateLogin; result.DebugMessage = "重複登入"; return(result); } Guid2UserID.Add(guid, id); UserList[id].SetOnline(guid); result.ReturnCode = (byte)ChatProtocol.ErrorCode.Ok; result.DebugMessage = ""; return(result); } }
public User GetUser(Guid guid) { if (Guid2UserID.ContainsKey(guid)) { int userID = Guid2UserID[guid]; User user = GetUser(userID); return(user); } else { return(null); } }
public void UserOffline(Guid guid) { lock (this) { RemovePeer(guid); if (Guid2UserID.ContainsKey(guid)) { int userID = Guid2UserID[guid]; Guid2UserID.Remove(guid); User user = GetUser(userID); user.SetOffline(); } } }