#include "Stdafx.h" #include "DNPrivateChatChannel.h" #include "dnPrivateChatManager.h" // #if defined( PRE_PRIVATECHAT_CHANNEL ) CDNPrivateChatManager* g_pPrivateChatChannelManager = NULL; CDNPrivateChatManager::CDNPrivateChatManager() { m_bFirst = false; for(int i=0;i::iterator itor = m_mChannelInfo[i].begin();itor!= m_mChannelInfo[i].end();itor++) { SAFE_DELETE((*itor).second); } m_mChannelInfo[i].clear(); } } bool CDNPrivateChatManager::AddPrivateChatChannel( char cWorldSetID, const TPrivateChatChannelInfo &ChannelInfo ) { ScopeLock Lock(m_Sync); char cWorldIndex = GetWorldIndex(cWorldSetID); std::map::iterator itor = m_mChannelInfo[cWorldIndex].find(ChannelInfo.nPrivateChatChannelID); if(itor != m_mChannelInfo[cWorldIndex].end() ) { g_Log.Log(LogType::_NORMAL, L"AddPrivateChatChannel Exist Channel\r\n"); return false; } CDNPrivateChaChannel* PrivateChatChannel = new CDNPrivateChaChannel; if(PrivateChatChannel) { PrivateChatChannel->SetPrivateChannelInfo( ChannelInfo ); ScopeLock Lock(m_Sync); m_mChannelInfo[cWorldIndex].insert(std::make_pair(ChannelInfo.nPrivateChatChannelID,PrivateChatChannel)); } else return false; return true; } CDNPrivateChaChannel* CDNPrivateChatManager::GetPrivateChannelInfo( char cWorldSetID, INT64 nChannelID ) { ScopeLock Lock(m_Sync); char cWorldIndex = GetWorldIndex(cWorldSetID); std::map::iterator itor = m_mChannelInfo[cWorldIndex].find(nChannelID); if(itor != m_mChannelInfo[cWorldIndex].end()) return (*itor).second; return NULL; } INT64 CDNPrivateChatManager::GetPrivateChatChannelId( char cWorldSetID, WCHAR* wszChannelName ) { if( !wszChannelName ) return 0; ScopeLock Lock(m_Sync); char cWorldIndex = GetWorldIndex(cWorldSetID); for(std::map::iterator itor = m_mChannelInfo[cWorldIndex].begin();itor != m_mChannelInfo[cWorldIndex].end();itor++) { if (wcscmp((*itor).second->GetChannelName(), wszChannelName) == 0) { return itor->first; } } return -1; } char CDNPrivateChatManager::GetWorldIndex(char cWorldSetID) { for(int i=0;i