From 510818d631e55d1a4b1d01442d1e99875a7377b1 Mon Sep 17 00:00:00 2001 From: Ivan Sorokin Date: Sat, 31 May 2014 20:20:48 +0400 Subject: [PATCH] Replaced dynamic_cast with switch on alert type. Conflicts: src/qtlibtorrent/qbtsession.cpp --- src/qtlibtorrent/qbtsession.cpp | 144 ++++++++++++++++---------------- 1 file changed, 73 insertions(+), 71 deletions(-) diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index a38355a2f..1c133a499 100755 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -2144,77 +2144,79 @@ void QBtSession::readAlerts() { void QBtSession::handleAlert(libtorrent::alert* a) { try { - if (torrent_finished_alert* p = dynamic_cast(a)) { - handleTorrentFinishedAlert(p); - } - else if (save_resume_data_alert* p = dynamic_cast(a)) { - handleSaveResumeDataAlert(p); - } - else if (file_renamed_alert* p = dynamic_cast(a)) { - handleFileRenamedAlert(p); - } - else if (torrent_deleted_alert* p = dynamic_cast(a)) { - handleTorrentDeletedAlert(p); - } - else if (storage_moved_alert* p = dynamic_cast(a)) { - handleStorageMovedAlert(p); - } - else if (metadata_received_alert* p = dynamic_cast(a)) { - handleMetadataReceivedAlert(p); - } - else if (file_error_alert* p = dynamic_cast(a)) { - handleFileErrorAlert(p); - } - else if (file_completed_alert* p = dynamic_cast(a)) { - handleFileCompletedAlert(p); - } - else if (torrent_paused_alert* p = dynamic_cast(a)) { - handleTorrentPausedAlert(p); - } - else if (tracker_error_alert* p = dynamic_cast(a)) { - handleTrackerErrorAlert(p); - } - else if (tracker_reply_alert* p = dynamic_cast(a)) { - handleTrackerReplyAlert(p); - } - else if (tracker_warning_alert* p = dynamic_cast(a)) { - handleTrackerWarningAlert(p); - } - else if (portmap_error_alert* p = dynamic_cast(a)) { - handlePortmapWarningAlert(p); - } - else if (portmap_alert* p = dynamic_cast(a)) { - handlePortmapAlert(p); - } - else if (peer_blocked_alert* p = dynamic_cast(a)) { - handlePeerBlockedAlert(p); - } - else if (peer_ban_alert* p = dynamic_cast(a)) { - handlePeerBanAlert(p); - } - else if (fastresume_rejected_alert* p = dynamic_cast(a)) { - handleFastResumeRejectedAlert(p); - } - else if (url_seed_alert* p = dynamic_cast(a)) { - handleUrlSeedAlert(p); - } - else if (listen_succeeded_alert *p = dynamic_cast(a)) { - handleListenSucceededAlert(p); - } - else if (listen_failed_alert *p = dynamic_cast(a)) { - handleListenFailedAlert(p); - } - else if (torrent_checked_alert* p = dynamic_cast(a)) { - handleTorrentCheckedAlert(p); - } - else if (external_ip_alert *p = dynamic_cast(a)) { - handleExternalIPAlert(p); - } - else if (state_update_alert *p = dynamic_cast(a)) { - handleStateUpdateAlert(p); - } - else if (stats_alert *p = dynamic_cast(a)) { - handleStatsAlert(p); + switch (a->type()) { + case torrent_finished_alert::alert_type: + handleTorrentFinishedAlert(static_cast(a)); + break; + case save_resume_data_alert::alert_type: + handleSaveResumeDataAlert(static_cast(a)); + break; + case file_renamed_alert::alert_type: + handleFileRenamedAlert(static_cast(a)); + break; + case torrent_deleted_alert::alert_type: + handleTorrentDeletedAlert(static_cast(a)); + break; + case storage_moved_alert::alert_type: + handleStorageMovedAlert(static_cast(a)); + break; + case metadata_received_alert::alert_type: + handleMetadataReceivedAlert(static_cast(a)); + break; + case file_error_alert::alert_type: + handleFileErrorAlert(static_cast(a)); + break; + case file_completed_alert::alert_type: + handleFileCompletedAlert(static_cast(a)); + break; + case torrent_paused_alert::alert_type: + handleTorrentPausedAlert(static_cast(a)); + break; + case tracker_error_alert::alert_type: + handleTrackerErrorAlert(static_cast(a)); + break; + case tracker_reply_alert::alert_type: + handleTrackerReplyAlert(static_cast(a)); + break; + case tracker_warning_alert::alert_type: + handleTrackerWarningAlert(static_cast(a)); + break; + case portmap_error_alert::alert_type: + handlePortmapWarningAlert(static_cast(a)); + break; + case portmap_alert::alert_type: + handlePortmapAlert(static_cast(a)); + break; + case peer_blocked_alert::alert_type: + handlePeerBlockedAlert(static_cast(a)); + break; + case peer_ban_alert::alert_type: + handlePeerBanAlert(static_cast(a)); + break; + case fastresume_rejected_alert::alert_type: + handleFastResumeRejectedAlert(static_cast(a)); + break; + case url_seed_alert::alert_type: + handleUrlSeedAlert(static_cast(a)); + break; + case listen_succeeded_alert::alert_type: + handleListenSucceededAlert(static_cast(a)); + break; + case listen_failed_alert::alert_type: + handleListenFailedAlert(static_cast(a)); + break; + case torrent_checked_alert::alert_type: + handleTorrentCheckedAlert(static_cast(a)); + break; + case external_ip_alert::alert_type: + handleExternalIPAlert(static_cast(a)); + break; + case state_update_alert::alert_type: + handleStateUpdateAlert(static_cast(a)); + break; + case stats_alert::alert_type: + handleStatsAlert(static_cast(a)); + break; } } catch (const std::exception& e) { qWarning() << "Caught exception in readAlerts(): " << e.what();