void CBouquet::moveService(const unsigned int oldPosition, const unsigned int newPosition, const unsigned char serviceType) { ChannelList* channels = &tvChannels; switch (serviceType) { case ST_DIGITAL_TELEVISION_SERVICE: case ST_NVOD_REFERENCE_SERVICE: case ST_NVOD_TIME_SHIFTED_SERVICE: channels = &tvChannels; break; case ST_DIGITAL_RADIO_SOUND_SERVICE: channels = &radioChannels; break; } if ((oldPosition < channels->size()) && (newPosition < channels->size())) { ChannelList::iterator it = channels->begin(); advance(it, oldPosition); CZapitChannel* tmp = *it; channels->erase(it); it = channels->begin(); advance(it, newPosition); channels->insert(it, tmp); } }
void ChannelMgr::RemoveChannel(Channel * chn) { ChannelList::iterator itr; ChannelList * cl = &Channels[chn->m_team]; DBCChannelMap::iterator itr2; DBCChannelMap *dbcchannel = &DBCChannels[chn->m_team]; lock.Acquire(); m_idToChannel.erase(chn->m_channelId); for(itr = cl->begin(); itr != cl->end(); itr++) { if(itr->second == chn) { cl->erase(itr); chn->m_lock.Release(); delete chn; lock.Release(); return; } } for(itr2 = dbcchannel->begin(); itr2 != dbcchannel->end(); itr2++) { if(itr2->second.second == chn) { dbcchannel->erase(itr2); chn->m_lock.Release(); delete chn; lock.Release(); return; } } lock.Release(); }
void ChannelMgr::RemoveChannel(Channel * chn) { ChannelList::iterator itr; ChannelList * cl = &Channels[0]; if(seperatechannels) cl = &Channels[chn->m_team]; lock.Acquire(); for(itr = cl->begin(); itr != cl->end(); ++itr) { if(itr->second == chn) { cl->erase(itr); delete chn; lock.Release(); return; } } lock.Release(); }