Esempio n. 1
0
bool
Listener::StopListeningForEventSpec (BroadcasterManager &manager, 
                             const BroadcastEventSpec &event_spec)
{
    Mutex::Locker locker(m_broadcasters_mutex);
    return manager.UnregisterListenerForEvents (*this, event_spec);

}
Esempio n. 2
0
uint32_t
Listener::StartListeningForEventSpec (BroadcasterManager &manager, 
                             const BroadcastEventSpec &event_spec)
{
    Mutex::Locker locker(m_broadcasters_mutex);

    uint32_t bits_acquired = manager.RegisterListenerForEvents(*this, event_spec);
    if (bits_acquired)
        m_broadcaster_managers.push_back(&manager);
        
    return bits_acquired;
}
Esempio n. 3
0
uint32_t
Listener::StartListeningForEventSpec (BroadcasterManager &manager, 
                             const BroadcastEventSpec &event_spec)
{
    // The BroadcasterManager mutex must be locked before m_broadcasters_mutex 
    // to avoid violating the lock hierarchy (manager before broadcasters).
    Mutex::Locker manager_locker(manager.m_manager_mutex);
    Mutex::Locker locker(m_broadcasters_mutex);

    uint32_t bits_acquired = manager.RegisterListenerForEvents(*this, event_spec);
    if (bits_acquired)
        m_broadcaster_managers.push_back(&manager);
        
    return bits_acquired;
}