// // Manager::getListenerList - Chapter 10, page 300 // // Get the list of listeners associated with a specific event // type // ListenerList Manager::GetListenerList( TypeId const & eventType ) const { // invalid event type, so sad if ( ! VValidateType( eventType ) ) return ListenerList(); EventListenerMap::const_iterator itListeners = m_registry.find( eventType.Value() ); // no listerners currently for this event type, so sad if ( itListeners == m_registry.end() ) return ListenerList(); EventListenerTable const & table = itListeners->second; // there was, but is not now, any listerners currently for // this event type, so sad if ( table.size() == 0 ) return ListenerList(); ListenerList result; result.reserve( table.size() ); for ( EventListenerTable::const_iterator it = table.begin(), end = table.end(); it != end; it++ ) { result.push_back( *it ); } return result; }
void EventManager::AddListener(ListenerPtr listener, EventType type) { // Register event type if (mEventRegistry.find(type) == mEventRegistry.end()) Register(type); // Get listeners ListenerRegistry::iterator mIt = mRegistry.find(type); if (mIt == mRegistry.end()) { // Initialize listener list ListenerRegistry::value_type entry(type, ListenerList()); mIt = mRegistry.insert(entry).first; } ListenerList& list = mIt->second; // Ensure listener not exists const ListenerList::const_iterator i = std::find(list.begin(), list.end(), listener); if (i != list.end()) return; // Insert list.push_back(listener); }
// - Global stuff - DataManager::DataManager() { this->subscribers.insert(SubscriptionMap::value_type(TYPE_GROUPS, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_GRID, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_USER_INFO, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_RESOURCE, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_ONSITE, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_STAFF, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_PART, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_PERMIT, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_PERMIT_QUEUE, ListenerList())); gridConvX = OGRE_GRID_WIDTH / GRID_WIDTH ; gridConvY = OGRE_GRID_HEIGHT / GRID_HEIGHT; gridDispX = OGRE_GRID_WIDTH / 2 - gridConvX / 2; gridDispY = OGRE_GRID_HEIGHT / 2 - gridConvX / 2; }
// - Global stuff - DataManager::DataManager() { this->subscribers.insert(SubscriptionMap::value_type(TYPE_GROUPS, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_GRID, ListenerList())); this->subscribers.insert(SubscriptionMap::value_type(TYPE_USER_INFO, ListenerList())); }