Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        public User GetUser(Guid guid)
        {
            if (Guid2UserID.ContainsKey(guid))
            {
                int userID = Guid2UserID[guid];

                User user = GetUser(userID);
                return(user);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        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();
                }
            }
        }