Show
Ignore:
Timestamp:
01/30/10 13:18:29 (6 months ago)
Author:
trichards
Message:

Refactored the Event framework so that I_Event is created in EventService? instead of EventQueue?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Core/branches/0075_TR_SCRIPTING/Event/src/EventService.cpp

    r3308 r3330  
    4747EventService::EventService() 
    4848:   m_pScriptObject(NULL) 
     49,   m_pEventsMutex(Threading::MutexFactory::create()) 
    4950{ 
    5051} 
     
    7071        } 
    7172    } 
     73 
     74    Threading::MutexFactory::destroy(m_pEventsMutex); 
    7275} 
    7376 
     
    117120 
    118121    module.addType<I_EventService>(getScriptTypeName(), "Event Service") 
     122        .addMethod("createEvent", &I_EventService::createEvent) 
     123        .addMethod("getEvent", &I_EventService::getEvent) 
    119124        .addMethod("getEventQueue", &I_EventService::getEventQueue) 
    120125        .addMethod("getActionMap", &I_EventService::getActionMap) 
     
    123128 
    124129    // EventQueue 
    125     module.addType<I_EventQueue>("EventQueue", "Event Queue") 
    126         .addMethod("createEvent", &I_EventQueue::createEvent) 
    127         .addMethod("getEvent", &I_EventQueue::getEvent) 
    128         .addMethod("dispatchOneEvent", &I_EventQueue::dispatchOneEvent) 
    129         .addMethod("dispatchAllEvents", &I_EventQueue::dispatchAllEvents) 
     130    module.addType<EventQueue>("EventQueue", "Event Queue") 
     131        .addMethod("dispatchOneEvent", &EventQueue::dispatchOneEvent) 
     132        .addMethod("dispatchAllEvents", &EventQueue::dispatchAllEvents) 
    130133    ; 
    131134 
     
    159162 
    160163//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 
     164I_Event& 
     165EventService::createEvent(const std::string& _name) 
     166{ 
     167    // Since getEvent() will create the event if 
     168    // it doesn't exist, just call it. 
     169    return getEvent(_name); 
     170} 
     171 
     172//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 
     173I_Event& 
     174EventService::getEvent(const std::string& _name) 
     175{ 
     176    Threading::CriticalSection guard(m_pEventsMutex); 
     177 
     178    // TODO Make sure the event has been created. 
     179    Events_type::iterator iter = m_events.find(_name); 
     180     
     181    if (iter == m_events.end()) 
     182    { 
     183        Event_impl* pEvent = new Event_impl(*this); 
     184 
     185        m_events[_name] = pEvent; 
     186 
     187        return *pEvent; 
     188    } 
     189    else 
     190    { 
     191        return *iter->second; 
     192    } 
     193} 
     194 
     195//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ 
    161196I_EventQueue& 
    162197EventService::getEventQueue(const std::string& _queueName)