void ChatHandler::handleMessage(MessageIn &msg) { switch (msg.getId()) { case GPMSG_SAY: handleGameChatMessage(msg); break; case CPMSG_ENTER_CHANNEL_RESPONSE: handleEnterChannelResponse(msg); break; case CPMSG_LIST_CHANNELS_RESPONSE: handleListChannelsResponse(msg); break; case CPMSG_PRIVMSG: handlePrivateMessage(msg); break; case CPMSG_ANNOUNCEMENT: handleAnnouncement(msg); break; case CPMSG_PUBMSG: handleChatMessage(msg); break; case CPMSG_QUIT_CHANNEL_RESPONSE: handleQuitChannelResponse(msg); break; case CPMSG_LIST_CHANNELUSERS_RESPONSE: handleListChannelUsersResponse(msg); break; case CPMSG_CHANNEL_EVENT: handleChannelEvent(msg); break; case CPMSG_WHO_RESPONSE: handleWhoResponse(msg); break; } }
void ChatHandler::handleMessage(Net::MessageIn &msg) { switch (msg.getId()) { case GPMSG_SAY: handleGameChatMessage(msg); break; case CPMSG_ENTER_CHANNEL_RESPONSE: handleEnterChannelResponse(msg); break; case CPMSG_LIST_CHANNELS_RESPONSE: handleListChannelsResponse(msg); break; case CPMSG_PRIVMSG: handlePrivateMessage(msg); break; case CPMSG_ANNOUNCEMENT: handleAnnouncement(msg); break; case CPMSG_PUBMSG: handleChatMessage(msg); break; case CPMSG_QUIT_CHANNEL_RESPONSE: handleQuitChannelResponse(msg); break; case CPMSG_LIST_CHANNELUSERS_RESPONSE: handleListChannelUsersResponse(msg); break; case CPMSG_CHANNEL_EVENT: handleChannelEvent(msg); break; case CPMSG_WHO_RESPONSE: handleWhoResponse(msg); break; case CPMSG_DISCONNECT_RESPONSE: { int errMsg = msg.readInt8(); // Successful logout if (errMsg == ERRMSG_OK) { // TODO: Handle logout } else { switch (errMsg) { case ERRMSG_NO_LOGIN: errorMessage = "Chatserver: Not logged in"; break; default: errorMessage = "Chatserver: Unknown error"; break; } state = STATE_ERROR; } } break; } }
void ChatHandler::processMessage(NetComputer *comp, MessageIn &message) { ChatClient &computer = *static_cast< ChatClient * >(comp); MessageOut result; if (computer.characterName.empty()) { if (message.getId() != PCMSG_CONNECT) return; std::string magic_token = message.readString(MAGIC_TOKEN_LENGTH); mTokenCollector.addPendingClient(magic_token, &computer); sendGuildRejoin(computer); return; } switch (message.getId()) { case PCMSG_CHAT: handleChatMessage(computer, message); break; case PCMSG_ANNOUNCE: handleAnnounceMessage(computer, message); break; case PCMSG_PRIVMSG: handlePrivMsgMessage(computer, message); break; case PCMSG_WHO: handleWhoMessage(computer); break; case PCMSG_ENTER_CHANNEL: handleEnterChannelMessage(computer, message); break; case PCMSG_USER_MODE: handleModeChangeMessage(computer, message); break; case PCMSG_KICK_USER: handleKickUserMessage(computer, message); case PCMSG_QUIT_CHANNEL: handleQuitChannelMessage(computer, message); break; case PCMSG_LIST_CHANNELS: handleListChannelsMessage(computer, message); break; case PCMSG_LIST_CHANNELUSERS: handleListChannelUsersMessage(computer, message); break; case PCMSG_TOPIC_CHANGE: handleTopicChange(computer, message); break; case PCMSG_DISCONNECT: handleDisconnectMessage(computer, message); break; case PCMSG_GUILD_CREATE: handleGuildCreation(computer, message); break; case PCMSG_GUILD_INVITE: handleGuildInvitation(computer, message); break; case PCMSG_GUILD_ACCEPT: handleGuildAcceptInvite(computer, message); break; case PCMSG_GUILD_GET_MEMBERS: handleGuildRetrieveMembers(computer, message); break; case PCMSG_GUILD_PROMOTE_MEMBER: handleGuildMemberLevelChange(computer, message); break; case PCMSG_GUILD_KICK_MEMBER: handleGuildMemberKick(computer, message); case PCMSG_GUILD_QUIT: handleGuildQuit(computer, message); break; case PCMSG_PARTY_INVITE: handlePartyInvite(computer, message); break; case PCMSG_PARTY_ACCEPT_INVITE: handlePartyAcceptInvite(computer, message); break; case PCMSG_PARTY_QUIT: handlePartyQuit(computer); break; case PCMSG_PARTY_REJECT_INVITE: handlePartyRejection(computer, message); break; default: LOG_WARN("ChatHandler::processMessage, Invalid message type" << message.getId()); result.writeShort(XXMSG_INVALID); break; } if (result.getLength() > 0) computer.send(result); }