bool alert::cancels(const alert & val) const { if (is_in_effect()) { return val.id() <= m_cancel || m_cancels.count(val.id()) > 0; } return false; }
void alert_manager::post_alert(const alert& alert_) { boost::mutex::scoped_lock lock(m_mutex); if (m_severity > alert_.severity()) return; // the internal limit is 100 alerts if (m_alerts.size() == 100) { alert* result = m_alerts.front(); m_alerts.pop(); delete result; } m_alerts.push(alert_.clone().release()); }
bool alert_manager::maybe_dispatch(alert const& a) { if (m_dispatch) { m_dispatch(a.clone()); return true; } return false; }
void alert_manager::post_alert(const alert& alert_) { mutex::scoped_lock lock(m_mutex); if (m_dispatch) { TORRENT_ASSERT(m_alerts.empty()); TORRENT_TRY { m_dispatch(std::auto_ptr<alert>(alert_.clone())); } TORRENT_CATCH(std::exception&) {} } else if (m_alerts.size() < m_queue_size_limit || !alert_.discardable())
void alert_manager::post_alert(const alert& alert_) { std::auto_ptr<alert> a(alert_.clone()); #ifndef TORRENT_DISABLE_EXTENSIONS for (ses_extension_list_t::iterator i = m_ses_extensions.begin() , end(m_ses_extensions.end()); i != end; ++i) { TORRENT_TRY { (*i)->on_alert(&alert_); } TORRENT_CATCH(std::exception&) {} } #endif mutex::scoped_lock lock(m_mutex); post_impl(a, lock); }
// -------------------------------------------------------------------------- void alert_stream::send ( alert const& alert ) // -------------------------------------------------------------------------- { byte msg[2]; LOG_MSG("net.tls.alert", alert.what()); if (alert.level == alert_level::fatal || alert.description == alert_description::close_notify) { m_notified = true; } msg[0] = static_cast<byte const>(alert.level); msg[1] = static_cast<byte const>(alert.description); m_record.send(content_type::alert, msg, 2); }
void print_alert(alert const& a) { std::cout << "ses1 (alert dispatch function): " << a.message() << std::endl; }