alert_manager.hpp

master
inpos 2016-03-10 15:26:19 +03:00
parent f12e0e9bf0
commit 4a67a2cc59
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
class plugin(object):
pass
class alert_manager(object):
operator = '(alert_manager const&)'
m_mutex = None
m_condition = None
m_alert_mask = 0
m_queue_size_limit = 0
m_generation = 0
m_alerts = []
m_allocations = []
def __init__(self, queue_limit, alert_mask = 'alert::error_notification'): # XXX
pass
def emplace_alert(self, *args):
'''
mutex::scoped_lock lock(m_mutex);
// don't add more than this number of alerts, unless it's a
// high priority alert, in which case we try harder to deliver it
// for high priority alerts, double the upper limit
if (m_alerts[m_generation].size() >= m_queue_size_limit
* (1 + T::priority))
return;
T alert(m_allocations[m_generation], std::forward<Args>(args)...);
m_alerts[m_generation].push_back(alert);
maybe_notify(&alert, lock);
'''
def pending(self):
pass
def get_all(self, alerts):
pass
def should_post(self):
'''
mutex::scoped_lock lock(m_mutex);
if (m_alerts[m_generation].size() >= m_queue_size_limit
* (1 + T::priority))
{
return false;
}
return (m_alert_mask & T::static_category) != 0;
'''
def wait_for_alert(self):
pass
def set_alert_mask(self, m):
'''
mutex::scoped_lock lock(m_mutex);
m_alert_mask = m;
'''
def alert_queue_size_limit(self):
return m_queue_size_limit
def set_alert_queue_size_limit(self, queue_size_limit_):
pass
def set_notify_function(self, fun):
pass
def maybe_notify(self):
pass
def m_notify(self):
pass