ThreadWeaver

jobinterface.h
1 /* -*- C++ -*-
2  Interface for jobs in ThreadWeaver.
3 
4  SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 */
8 
9 #ifndef JOBINTERFACE_H
10 #define JOBINTERFACE_H
11 
12 #include <QSharedPointer>
13 
14 #include "jobpointer.h"
15 #include "threadweaver_export.h"
16 
17 class QMutex;
18 
19 namespace ThreadWeaver
20 {
21 class Thread;
22 class Executor;
23 class QueueAPI;
24 class QueuePolicy;
25 
26 class JobInterface;
27 typedef QSharedPointer<JobInterface> JobPointer;
28 
29 class THREADWEAVER_EXPORT JobInterface
30 {
31 public:
32  enum Status {
33  Status_NoStatus = 0,
34  Status_New,
35  Status_Queued,
36  Status_Running,
37  Status_Success,
38  Status_Failed,
39  Status_Aborted,
40  Status_NumberOfStatuses,
41  };
42 
43  virtual ~JobInterface()
44  {
45  }
46  virtual void execute(const JobPointer &job, Thread *) = 0;
47  virtual void blockingExecute() = 0;
48  virtual Executor *setExecutor(Executor *executor) = 0;
49  virtual Executor *executor() const = 0;
50  virtual int priority() const = 0;
51  virtual Status status() const = 0;
52  virtual void setStatus(Status) = 0;
53  virtual bool success() const = 0;
54  virtual void requestAbort() = 0;
55  virtual void aboutToBeQueued(QueueAPI *api) = 0;
56  virtual void aboutToBeQueued_locked(QueueAPI *api) = 0;
57  virtual void aboutToBeDequeued(QueueAPI *api) = 0;
58  virtual void aboutToBeDequeued_locked(QueueAPI *api) = 0;
59  virtual bool isFinished() const = 0;
60  virtual void assignQueuePolicy(QueuePolicy *) = 0;
61  virtual void removeQueuePolicy(QueuePolicy *) = 0;
62  virtual QList<QueuePolicy *> queuePolicies() const = 0;
63  virtual void run(JobPointer self, Thread *thread) = 0;
64  friend class Executor;
65  virtual void defaultBegin(const JobPointer &job, Thread *thread) = 0;
66  virtual void defaultEnd(const JobPointer &job, Thread *thread) = 0;
67  virtual QMutex *mutex() const = 0;
68 };
69 
70 }
71 
72 Q_DECLARE_METATYPE(ThreadWeaver::JobPointer)
73 
74 #endif // JOBINTERFACE_H
Q_SCRIPTABLE CaptureState status()
KIOWIDGETS_EXPORT bool run(const QUrl &_url, bool _is_local)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Thu Sep 21 2023 04:10:21 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.