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; } }
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; } }
public override void CheckRequest() { base.CheckRequest(); if (ChatSessionManager.IsNickNameExisted(_cmd.NickName)) { _errorCode = ChatError.IRCError; _sendingBuffer = ChatIRCError.BuildNoSuchNickError(); } }
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); } }
//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; } }
protected override void BuildErrorResponse() { base.BuildErrorResponse(); switch (_errorCode) { case ChatError.NoSuchChannel: _sendingBuffer = ChatIRCError.BuildNoSuchChannelError(_request.ChannelName); break; case ChatError.NoSuchNick: _sendingBuffer = ChatIRCError.BuildNoSuchNickError(); break; } }
//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); } }
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); } }
/// <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(); } }
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; } } }
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(); }
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; } }
protected override void BuildErrorResponse() { base.BuildErrorResponse(); _sendingBuffer = ChatIRCError.BuildNoSuchNickError(); }