- Namespaced QBittorrentSession and QTorrentHandle to avoid possible future conflicts
[qtrapids] / src / engine / AlertWaiterThread.cpp
index 7a2f90f..4f18636 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
+
 #include <QDebug>
 
 #include "AlertWaiterThread.h"
 
-AlertWaiterThread::AlertWaiterThread(QObject* parent): QThread(parent)
+// Constants:
+// Timeout for waiting alerts
+const libtorrent::time_duration ALERT_WAIT_TIMEOUT 
+               = libtorrent::time_duration(libtorrent::seconds(15));
+
+
+AlertWaiterThread::AlertWaiterThread(TorrentSession *const session, QObject* parent) : 
+               QThread(parent),
+               btSession_(session)
 {
 }
 
@@ -32,20 +41,31 @@ AlertWaiterThread::~AlertWaiterThread()
 }
 
 
+void AlertWaiterThread::allAlerts(bool enable)
+{
+       // If all enabled, set all alert cateogries:
+       if (enable) {
+               btSession_->set_alert_mask(libtorrent::alert::all_categories);
+       } else {
+               // Otherwise set to default, which is only error notifications.
+               btSession_->set_alert_mask(libtorrent::alert::error_notification);
+       }
+}
+
+
 void AlertWaiterThread::run()
 {
+       Alert const *alertTemp = NULL;
        while (true)
        {
+#ifdef QTRAPIDS_DEBUG
                qDebug() << "AlertWaiter running";
-               emit alert();
-               sleep(2);
+#endif
+               // wait_for_alert() call blocks. Returns libtorrent alert. 
+               // Returns NULL, if no alerts in timeout period.
+               alertTemp = btSession_->wait_for_alert(ALERT_WAIT_TIMEOUT);
+               emit alert(alertTemp);
+               // 2000 us = 2ms. Gives main thread time to handle alert signal.
+               usleep(2000); 
        }
 }
-
-
-// =================== SIGNALS =======================
-// AlertWaiterThread::alert()
-// {
-// }
-
-