bool NodeMessages::cleanup() { m_sender = ChatChannel(); m_dest = ChatChannel(); return false; }
ChatChannel* Chat::createChannel(const Player& player, uint16_t channelId) { if (getChannel(player, channelId)) { return nullptr; } switch (channelId) { case CHANNEL_GUILD: { Guild* guild = player.getGuild(); if (guild) { auto ret = guildChannels.emplace(std::make_pair(guild->getId(), ChatChannel(channelId, guild->getName()))); return &ret.first->second; } break; } case CHANNEL_PARTY: { Party* party = player.getParty(); if (party) { auto ret = partyChannels.emplace(std::make_pair(party, ChatChannel(channelId, "Party"))); return &ret.first->second; } break; } case CHANNEL_PRIVATE: { //only 1 private channel for each premium player if (!player.isPremium() || getPrivateChannel(player)) { return nullptr; } //find a free private channel slot for (uint16_t i = 100; i < 10000; ++i) { auto ret = privateChannels.emplace(std::make_pair(i, PrivateChatChannel(i, player.getName() + "'s Channel"))); if (ret.second) { //second is a bool that indicates that a new channel has been placed in the map auto& newChannel = (*ret.first).second; newChannel.setOwner(player.getGUID()); return &newChannel; } } break; } default: break; } return nullptr; }
/*! * Получение канала на основе идентификатора канала или нормализированного имени и типа канала. */ ChatChannel DataBase::channel(const QByteArray &id, int type) { qint64 key = channelKey(id, type); if (key == -1) return ChatChannel(); return channel(key); }
int ChatChannelManager::createNewChannel(const std::string &channelName, const std::string &channelAnnouncement, const std::string &channelPassword, bool joinable) { int channelId = nextUsable(); // Register channel mChatChannels.insert(std::make_pair(channelId, ChatChannel(channelId, channelName, channelAnnouncement, channelPassword, joinable))); return channelId; }
/*! * Авторизация пользователя, если пользователь не существует, будет создан новый. */ AuthResult ExternalAuthTask::auth(const QVariantMap &data) { QByteArray id = SimpleID::decode(data.value(LS("id")).toByteArray()); if (SimpleID::typeOf(id) != SimpleID::UserId) return AuthResult(Notice::Forbidden, m_data.id); AuthResult result = AnonymousAuth::isCollision(id, m_data.nick, m_data.id, Storage::value(STORAGE_NICK_OVERRIDE).toBool()); if (result.action == AuthResult::Reject) { if (result.status == Notice::NickAlreadyUse) m_cache[m_data.id + m_data.cookie] = data; return result; } ChatChannel channel = Ch::channel(id, SimpleID::UserId); bool created = false; if (!channel) { channel = ChatChannel(new ServerChannel(id, m_data.nick)); created = true; channel->setAccount(); channel->account()->provider = data.value(LS("provider")).toString(); channel->account()->groups += LS("registered"); channel->account()->setDate(DateTime::utc()); channel->setName(m_data.nick); channel->gender().setRaw(m_data.gender); channel->user()->set(User(data.value(LS("user")).toMap())); } if (channel->status().value() == Status::Offline) { channel->setDate(); channel->status().set(m_data.status); } if (!channel->isValid()) return AuthResult(Notice::BadRequest, m_data.id); Core::add(channel); Ch::userChannel(channel, m_data, m_host, created, m_socket); LOG_INFO("N3010", "Core/ExternalAuth", channel->name() << "@" << m_host + "/" + ChatId(channel->id()).toString() << ", " << m_data.host) m_cache.remove(m_data.id + m_data.cookie); return AuthResult(id, m_data.id); }