ThreadWeaver

iddecorator.h
1 /* -*- C++ -*-
2  Base class for job decorators 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 THREADWEAVER_IDDECORATOR_H
10 #define THREADWEAVER_IDDECORATOR_H
11 
12 #include <QObject>
13 
14 #include "jobinterface.h"
15 #include "threadweaver_export.h"
16 
17 namespace ThreadWeaver
18 {
19 class Collection;
20 class Sequence;
21 
22 /** @brief IdDecorator decorates a job without changing it's behaviour.
23  *
24  * It is supposed to be used as the base class for actual decorators that do change the behaviour of jobs. */
25 class THREADWEAVER_EXPORT IdDecorator : public JobInterface
26 {
27 public:
28  explicit IdDecorator(JobInterface *job, bool autoDelete = true);
29  ~IdDecorator() override;
30  /** Retrieve the decorated job. */
31  const JobInterface *job() const;
32  /** Retrieve the decorated job. */
33  JobInterface *job();
34  /** Auto-delete the decoratee or not. */
35  void setAutoDelete(bool onOff);
36  /** Will the decoratee be auto-deleted? */
37  bool autoDelete() const;
38  /** Retrieve the decorated job as a Collection.
39  * If the decorated Job is not a Collection, 0 is returned. */
40  const Collection *collection() const;
41  /** Retrieve the decorated job as a Collection.
42  * If the decorated Job is not a Collection, 0 is returned. */
43  Collection *collection();
44  /** Retrieve the decorated job as a Sequence.
45  * If the decorated Job is not a Sequence, 0 is returned. */
46  const Sequence *sequence() const;
47  /** Retrieve the decorated job as a Sequence.
48  * If the decorated Job is not a Sequence, 0 is returned. */
49  Sequence *sequence();
50 
51  void execute(const JobPointer &job, Thread *) override;
52  void blockingExecute() override;
53  Executor *setExecutor(Executor *executor) override;
54  Executor *executor() const override;
55  int priority() const override;
56  void setStatus(Status) override;
57  Status status() const override;
58  bool success() const override;
59  void requestAbort() override;
60  void aboutToBeQueued(QueueAPI *api) override;
61  void aboutToBeQueued_locked(QueueAPI *api) override;
62  void aboutToBeDequeued(QueueAPI *api) override;
63  void aboutToBeDequeued_locked(QueueAPI *api) override;
64  bool isFinished() const override;
65  void assignQueuePolicy(QueuePolicy *) override;
66  void removeQueuePolicy(QueuePolicy *) override;
67  QList<QueuePolicy *> queuePolicies() const override;
68  QMutex *mutex() const override;
69 
70 protected:
71  void run(JobPointer self, Thread *thread) override;
72  void defaultBegin(const JobPointer &job, Thread *thread) override;
73  void defaultEnd(const JobPointer &job, Thread *thread) override;
74 
75 private:
76  class Private1;
77  Private1 *const d1;
78  class Private2;
79  Private2 *d2;
80 };
81 
82 }
83 
84 #endif // THREADWEAVER_IDDECORATOR_H
IdDecorator decorates a job without changing it's behaviour.
Definition: iddecorator.h:25
Q_SCRIPTABLE CaptureState status()
A Sequence is a vector of Jobs that will be executed in a sequence.
Definition: sequence.h:30
QueuePolicy is an interface for customizations of the queueing behaviour of jobs.
Definition: queuepolicy.h:38
Thread represents a worker thread in a Queue's inventory.
Definition: thread.h:27
A Collection is a vector of Jobs that will be queued together.
Definition: collection.h:31
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Sep 29 2023 04:02:13 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.