File indexing completed on 2024-05-12 12:02:33
0001 /* -*- C++ -*- 0002 The detailed API for Weavers in ThreadWeaver. 0003 0004 SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <mirko@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #ifndef QUEUEAPI_H 0010 #define QUEUEAPI_H 0011 0012 #include "jobpointer.h" 0013 #include "queuesignals.h" 0014 #include "state.h" 0015 #include "weaverinterface.h" 0016 0017 namespace ThreadWeaver 0018 { 0019 class QueueAPI : public QueueSignals, public WeaverInterface 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 explicit QueueAPI(QObject *parent = nullptr); 0025 explicit QueueAPI(ThreadWeaver::Private::QueueSignals_Private *d, QObject *parent = nullptr); 0026 0027 virtual void shutDown_p() = 0; 0028 const State *state() const override = 0; 0029 virtual State *state() = 0; 0030 virtual void setMaximumNumberOfThreads_p(int cap) = 0; 0031 virtual int maximumNumberOfThreads_p() const = 0; 0032 virtual int currentNumberOfThreads_p() const = 0; 0033 virtual bool dequeue_p(JobPointer) = 0; 0034 virtual void dequeue_p() = 0; 0035 virtual void finish_p() = 0; 0036 virtual void suspend_p() = 0; 0037 virtual void resume_p() = 0; 0038 virtual bool isEmpty_p() const = 0; 0039 virtual bool isIdle_p() const = 0; 0040 virtual int queueLength_p() const = 0; 0041 virtual void requestAbort_p() = 0; 0042 }; 0043 0044 } 0045 0046 #endif // QUEUEAPI_H