File indexing completed on 2024-04-28 04:01:23

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