source: SMSSender/common/utils/staskmanager.h @ 319:1ec456878bcb

separation-frontend-backend
Last change on this file since 319:1ec456878bcb was 319:1ec456878bcb, checked in by Sämy Zehnder <saemy.zehnder@…>, 8 years ago
  • Adjusts header guards to follow common pattern based on the filename.
File size: 1.8 KB
Line 
1/*
2 smssender - A frontend for fast and easy SMS sending over different gateways.
3 Copyright (C) 2007-2014, gorrión. See http://smssender.gorrion.ch
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18#ifndef COMMON_UTILS_STASKMANAGER_H
19#define COMMON_UTILS_STASKMANAGER_H
20
21#include <QObject>
22#include <QList>
23#include <QMutex>
24
25#include "common/domain/stask.h"
26#include "common/utils/smacros.h"
27
28class COMMON_EXPORT STaskManager : public QObject {
29    Q_OBJECT
30    S_SINGLETON(STaskManager)
31
32public:
33    ~STaskManager();
34
35public:
36    void addTaskToQueue(STask* task);
37    void removeTaskFromQueue(STask* task);
38
39    bool hasTaskUnderControl(STask* task) const;
40
41    QList<STask*> queuedTasks() const;
42    QList<STask*> runningTasks() const;
43
44    QList<STask*> runningTasksOfThisType(uint uid, const QString& nmespace) const;
45
46public:
47    void tearDown();
48
49signals:
50    void taskEnqueued(STask* task);
51    void taskDequeued(STask* task);
52    void taskFinished(STask* task);
53
54private:
55    bool isTaskRunnable(STask* task) const;
56
57private slots:
58    void startTasks();
59    void onTaskFinished(STask* task);
60
61private:
62    mutable QMutex tasksMutex_;
63    QList<STask*>  taskQueue_;
64    QList<STask*>  runningTasks_;
65
66    bool           tornDown_;
67};
68
69#endif /* COMMON_UTILS_STASKMANAGER_H */
Note: See TracBrowser for help on using the repository browser.