// 接続失敗時 void CSCConnection::onConnectionFailed() { CAuthEvent* event = new CAuthEvent(); event->setAuthResult(false); event->SetEventType(myEVT_THREAD_GET_PING); // イベントの種類をセット invokeEvent(event); }
CConnectionEventBase* CIRCEventFactory::Create(const CIRCResponseData& message) { if (message.m_statusCode == IRCCommand::PRIVMSG){ return createPrivateMessageEvent(message); } if (message.m_statusCode == IRCCommand::PART){ return createPartMessageEvent(message); } if (message.m_statusCode == IRCCommand::JOIN){ return createJoinMessageEvent(message); } if (message.m_statusCode == IRCCommand::TOPIC){ return createTopicMessageEvent(message); } if (message.m_statusCode == IRCCommand::QUIT){ // すべてのチャンネルへのPartEventの作成 CStreamEvent<CPartMessage>* event = new CStreamEvent<CPartMessage>(myEVT_THREAD_STREAM_CH_PART); CPartMessage* log = new CPartMessage(); log->setServiceId(m_connectionId); log->setChannelName(""); log->setUserName(message.m_username); event->setServiceLog(log); return event; } if (message.m_statusCode == IRCCommand::NICK){ return createNickMessageEvent(message); } if (message.m_statusCode == IRCCommand::KICK){ return createKickEvent(message); } if (message.m_statusCode == IRCCommand::INVITE){ return createInviteEvent(message); } if (message.m_statusCode == IRCCommand::NAMES_REPLY){ addNames(message); } if (message.m_statusCode == IRCCommand::TOPIC_REPLY){ return createTopicEvent(message); } if (message.m_statusCode == IRCCommand::NAMES_REPLY_END){ //ユーザー名羅列終了リプライ return createNamesEvent(message); } if (message.m_statusCode == IRCCommand::INVALID_USERNAME || message.m_statusCode == IRCCommand::INVALID_CHANNEL){ // 不適切 //エラー CAuthEvent* event = new CAuthEvent(); event->setAuthResult(false); return event; } return NULL; }