Added Q_FUNC_INFO macros to some functions.
[qtrapids] / src / server / AlertWaiterThread.cpp
index 69ad8db..c41ea29 100644 (file)
@@ -1,11 +1,9 @@
 /***************************************************************************
- *   Copyright (C) 2009 by Lassi Väätämöinen   *
- *   lassi.vaatamoinen@ixonos.com   *
+ *   Copyright (C) 2010 by Ixonos Plc   *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   the Free Software Foundation; version 2 of the License.               *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
@@ -32,8 +30,10 @@ const libtorrent::time_duration ALERT_WAIT_TIMEOUT
 
 
 AlertWaiterThread::AlertWaiterThread(session_t *session, QObject* parent) :
-        QThread(parent),
-        btSession_(session)
+               QThread(parent),
+               btSession_(session),
+               running_(false),
+               alertMutex_()
 {
 }
 
@@ -45,31 +45,37 @@ 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);
-    }
+       // 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_t const *alertTemp = NULL;
-    while (true)
-    {
-        // 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();
-        // 2000 us = 2ms. Gives main thread time to handle alert signal.
-        usleep(2000);
-    }
+       alert_t const *alertTemp = NULL;
+       running_ = true;
+       while (running_) {
+               // 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();
+               // 2000 us = 2ms. Gives main thread time to handle alert signal.
+               usleep(2000);
+       }
 }
 
+
+void AlertWaiterThread::stop()
+{
+       alertMutex_.lock();
+       running_ = false;
+       alertMutex_.unlock();
 }
+
+
+} // namespace qtrapids