ThreadWeaver 5.109.0
dependencypolicy.h
1/* -*- C++ -*-
2 This file implements the DependencyPolicy class.
3
4 SPDX-FileCopyrightText: 2004-2013 Mirko Boehm <mirko@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.0-or-later
7
8 $Id: DebuggingAids.cpp 20 2005-08-08 21:02:51Z mirko $
9*/
10
11#ifndef DEPENDENCYPOLICY_H
12#define DEPENDENCYPOLICY_H
13
14#include <QtGlobal>
15
16// template <typename T> class QList;
17
18#include "queuepolicy.h"
19
20namespace ThreadWeaver
21{
22class JobInterface;
23class Dependency;
24
32class THREADWEAVER_EXPORT DependencyPolicy : public QueuePolicy
33{
34public:
37
43 void addDependency(JobPointer jobA, JobPointer jobB);
44 void addDependency(const Dependency &dep);
45
53 bool removeDependency(JobPointer jobA, JobPointer jobB);
54 bool removeDependency(const Dependency &dep);
55
60 void resolveDependencies(JobPointer);
61
62 // FIXME remove
63 // /** @brief Retrieve a list of dependencies of this job. */
64 // QList<JobPointer> getDependencies(JobPointer) const;
65
66 static DependencyPolicy &instance();
67
68 bool canRun(JobPointer) override;
69
70 void free(JobPointer) override;
71
72 void release(JobPointer) override;
73
74 void destructed(JobInterface *job) override;
75
76 bool isEmpty() const;
77
78protected:
82 bool hasUnresolvedDependencies(JobPointer) const;
83
84private:
86 class Private;
87 Private *const d;
88};
89
90}
91
92#endif
DependencyPolicy implements execution-time dependencies dependencies between Jobs.
Definition dependencypolicy.h:33
bool removeDependency(JobPointer jobA, JobPointer jobB)
Remove a dependency.
bool canRun(JobPointer) override
canRun() is called before the job is executed.
void destructed(JobInterface *job) override
destructing() is called when a Job that has this queue policy assigned gets destructed.
bool hasUnresolvedDependencies(JobPointer) const
Query whether the job has an unresolved dependency.
~DependencyPolicy() override
Destructor.
void resolveDependencies(JobPointer)
Resolve all dependencies for a job.
void addDependency(JobPointer jobA, JobPointer jobB)
Add jobB as a dependency of jobA.
void free(JobPointer) override
free() is called after the job has been executed.
void release(JobPointer) override
release() is called if canRun() returned true, but the job has not been executed for external reasons...
QueuePolicy is an interface for customizations of the queueing behaviour of jobs.
Definition queuepolicy.h:39