Added build script of Debian
[qtrapids] / src / server / AlertWaiterThread.cpp
index f6029be..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        *
 namespace qtrapids
 {
 
-    // Constants:
-    // Timeout for waiting alerts
-    const libtorrent::time_duration ALERT_WAIT_TIMEOUT 
-    = libtorrent::time_duration(libtorrent::seconds(15));
+// Constants:
+// Timeout for waiting alerts
+const libtorrent::time_duration ALERT_WAIT_TIMEOUT
+= libtorrent::time_duration(libtorrent::seconds(15));
 
 
-    AlertWaiterThread::AlertWaiterThread(session_t *session, QObject* parent) : 
+AlertWaiterThread::AlertWaiterThread(session_t *session, QObject* parent) :
                QThread(parent),
-               btSession_(session)
-    {
-    }
-
-
-    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_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); 
-        }
-    }
+               btSession_(session),
+               running_(false),
+               alertMutex_()
+{
+}
+
+
+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_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