コード例 #1
0
        public override void CheckRequest()
        {
            base.CheckRequest();

            if (_errorCode != ChatError.NoError)
            {
                return;
            }

            if (_session.UserInfo.JoinedChannels.Count == 0)
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_cmd.ChannelName);
                return;
            }

            if (!_session.UserInfo.GetJoinedChannelByName(_cmd.ChannelName, out _channel))
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_cmd.ChannelName);
                return;
            }

            if (!_channel.GetChannelUserBySession(_session, out _user))
            {
                _errorCode     = ChatError.Parse;
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                return;
            }
        }
コード例 #2
0
        protected override void CheckRequest()
        {
            switch (_request.RequestType)
            {
            case ChatMessageType.ChannelMessage:
                base.CheckRequest();
                break;

            case ChatMessageType.UserMessage:

                if (_request.RequestType == ChatMessageType.UserMessage)
                {
                    if (!ChatSessionManager.GetSessionByNickName(_request.NickName, out _otherSession))
                    {
                        _errorCode     = ChatError.NoSuchNick;
                        _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                    }
                }
                break;

            default:
                _errorCode = ChatError.Parse;
                break;
            }
        }
コード例 #3
0
        public override void CheckRequest()
        {
            base.CheckRequest();

            if (ChatSessionManager.IsNickNameExisted(_cmd.NickName))
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
            }
        }
コード例 #4
0
        public void JoinChannel()
        {
            if (_session.UserInfo.IsJoinedChannel(_request.ChannelName))
            {
                //then we send user list which already in this channel ???????????
                _channel.SendChannelUsersToJoiner(_user);

                //send channel mode to joiner
                _channel.SendChannelModesToJoiner(_user);
            }
            else
            {
                //channel.JoinChannel(_session);
                if (_channel.Property.ChannelMode.IsInviteOnly)
                {
                    //invited only
                    _errorCode = ChatError.IRCError;
                    return;
                }

                if (_channel.IsUserBanned(_user))
                {
                    _errorCode     = ChatError.IRCError;
                    _sendingBuffer = ChatIRCError.BuildBannedFromChannelError(_channel.Property.ChannelName);
                    return;
                }
                if (_channel.Property.ChannelUsers.Count >= _channel.Property.MaxNumberUser)
                {
                    _errorCode     = ChatError.IRCError;
                    _sendingBuffer = ChatIRCError.BuildChannelIsFullError(_channel.Property.ChannelName);
                    return;
                }
                //if all pass, it mean  we excute join channel
                _user.SetDefaultProperties();


                //simple check for avoiding program crash
                if (_channel.IsUserExisted(_user))
                {
                    _errorCode = ChatError.UserAlreadyInChannel;
                    return;
                }

                _channel.AddBindOnUserAndChannel(_user);

                //first we send join information to all user in this channel
                _channel.MultiCastJoin(_user);

                //then we send user list which already in this channel ???????????
                _channel.SendChannelUsersToJoiner(_user);

                //send channel mode to joiner
                _channel.SendChannelModesToJoiner(_user);
            }
        }
コード例 #5
0
        //1.筛选出所要加入的频道,如果不存在则创建

        //2.检查用户名nickname是否已经在频道中存在
        //若存在则提醒用户名字冲突
        //不存在则加入频道
        //广播加入信息
        //发送频道模式给此用户
        //发送频道用户列表给此用户
        //_errorCode>1024
        protected override void CheckRequest()
        {
            base.CheckRequest();
            //some GameSpy game only allow one player join one chat room
            //but GameSpy Arcade can join more than one channel
            if (_session.UserInfo.JoinedChannels.Count > 3)
            {
                _sendingBuffer =
                    ChatIRCError.BuildToManyChannelError(_request.ChannelName);
                return;
            }
        }
コード例 #6
0
        protected override void BuildErrorResponse()
        {
            base.BuildErrorResponse();
            switch (_errorCode)
            {
            case ChatError.NoSuchChannel:
                _sendingBuffer =
                    ChatIRCError.BuildNoSuchChannelError(_request.ChannelName);
                break;

            case ChatError.NoSuchNick:
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                break;
            }
        }
コード例 #7
0
        //1.筛选出所要加入的频道,如果不存在则创建

        //2.检查用户名nickname是否已经在频道中存在
        //若存在则提醒用户名字冲突
        //不存在则加入频道
        //广播加入信息
        //发送频道模式给此用户
        //发送频道用户列表给此用户
        //_errorCode>1024
        public override void CheckRequest()
        {
            base.CheckRequest();
            if (_errorCode != ChatError.NoError)
            {
                return;
            }

            //game spy only allow one player join one chat room
            if (_session.UserInfo.JoinedChannels.Count > 1)
            {
                _sendingBuffer =
                    ChatIRCError.BuildToManyChannelError(_cmd.ChannelName);
            }
        }
コード例 #8
0
 public override void CheckRequest()
 {
     base.CheckRequest();
     //can not find any user
     if (!_channel.GetChannelUserBySession(_session, out _user))
     {
         _errorCode     = ChatError.IRCError;
         _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
         return;
     }
     if (!ChatChannelManager.GetChannel(_cmd.ChannelName, out _channel))
     {
         _errorCode     = ChatError.IRCError;
         _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_cmd.ChannelName);
     }
 }
コード例 #9
0
        /// <summary>
        /// Send all channel user information
        /// </summary>
        private void GetUserInfo()
        {
            ChatSession session;

            if (ChatSessionManager.GetSessionByNickName(_cmd.Name, out session))
            {
                BuildWhoReplyForUser(session);
            }
            else if (ChatSessionManager.GetSessionByUserName(_cmd.Name, out session))
            {
                BuildWhoReplyForUser(session);
            }
            else //todo check whether we need this error
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
            }
        }
コード例 #10
0
        protected override void CheckRequest()
        {
            base.CheckRequest();

            if (_request.NickName != _session.UserInfo.NickName)
            {
                if (!_user.IsChannelOperator)
                {
                    _errorCode = ChatError.NotChannelOperator;
                    return;
                }
                IsSetOthersKeyValue = true;
                if (!_channel.GetChannelUserByNickName(_request.NickName, out _otherUser))
                {
                    _errorCode     = ChatError.IRCError;
                    _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                    return;
                }
            }
        }
コード例 #11
0
        public override void CheckRequest()
        {
            base.CheckRequest();
            if (_errorCode != Entity.Structure.ChatError.NoError)
            {
                return;
            }

            var result = from s in ChatSessionManager.Sessions.Values
                         where s.UserInfo.NickName == _cmd.NickName
                         select s.UserInfo;

            if (result.Count() != 1)
            {
                _errorCode     = Entity.Structure.ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                return;
            }
            _userInfo = result.FirstOrDefault();
        }
コード例 #12
0
        private void GetChannelAndUser()
        {
            if (_session.UserInfo.JoinedChannels.Count == 0)
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_cmd.ChannelName);
                return;
            }

            if (!_session.UserInfo.GetJoinedChannelByName(_cmd.ChannelName, out _channel))
            {
                _errorCode     = ChatError.IRCError;
                _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_cmd.ChannelName);
                return;
            }

            if (!_channel.GetChannelUserBySession(_session, out _user))
            {
                _errorCode     = ChatError.Parse;
                _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
                return;
            }
        }
コード例 #13
0
 protected override void BuildErrorResponse()
 {
     base.BuildErrorResponse();
     _sendingBuffer = ChatIRCError.BuildNoSuchNickError();
 }