File indexing completed on 2024-04-21 04:01:29

0001 /* -*- C++ -*-
0002     This file implements the StateImplementation class.
0003 
0004     SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <mirko@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 
0008     $Id: InConstructionState.cpp 30 2005-08-16 16:16:04Z mirko $
0009 */
0010 
0011 #include "weaverimplstate.h"
0012 
0013 namespace ThreadWeaver
0014 {
0015 WeaverImplState::WeaverImplState(QueueSignals *weaver)
0016     : State(weaver)
0017 {
0018 }
0019 
0020 const State *WeaverImplState::state() const
0021 {
0022     return this;
0023 }
0024 
0025 void WeaverImplState::shutDown()
0026 {
0027     weaver()->shutDown_p();
0028 }
0029 
0030 Weaver *WeaverImplState::weaver()
0031 {
0032     Q_ASSERT(dynamic_cast<Weaver *>(State::weaver()));
0033     return static_cast<Weaver *>(State::weaver());
0034 }
0035 
0036 const Weaver *WeaverImplState::weaver() const
0037 {
0038     Q_ASSERT(dynamic_cast<const Weaver *>(State::weaver()));
0039     return static_cast<const Weaver *>(State::weaver());
0040 }
0041 
0042 void WeaverImplState::setMaximumNumberOfThreads(int cap)
0043 {
0044     weaver()->setMaximumNumberOfThreads_p(cap);
0045 }
0046 
0047 int WeaverImplState::maximumNumberOfThreads() const
0048 {
0049     return weaver()->maximumNumberOfThreads_p();
0050 }
0051 
0052 int WeaverImplState::currentNumberOfThreads() const
0053 {
0054     return weaver()->currentNumberOfThreads_p();
0055 }
0056 
0057 void WeaverImplState::enqueue(const QList<JobPointer> &jobs)
0058 {
0059     weaver()->enqueue_p(jobs);
0060 }
0061 
0062 bool WeaverImplState::dequeue(const JobPointer &job)
0063 {
0064     return weaver()->dequeue_p(job);
0065 }
0066 
0067 void WeaverImplState::dequeue()
0068 {
0069     weaver()->dequeue_p();
0070 }
0071 
0072 void WeaverImplState::finish()
0073 {
0074     weaver()->finish_p();
0075 }
0076 
0077 bool WeaverImplState::isEmpty() const
0078 {
0079     return weaver()->isEmpty_p();
0080 }
0081 
0082 bool WeaverImplState::isIdle() const
0083 {
0084     return weaver()->isIdle_p();
0085 }
0086 
0087 int WeaverImplState::queueLength() const
0088 {
0089     return weaver()->queueLength_p();
0090 }
0091 
0092 void WeaverImplState::requestAbort()
0093 {
0094     return weaver()->requestAbort_p();
0095 }
0096 
0097 void WeaverImplState::reschedule()
0098 {
0099     // Not implemented, performed directly in Weaver::reschedule().
0100 }
0101 
0102 void WeaverImplState::waitForAvailableJob(Thread *th)
0103 {
0104     weaver()->blockThreadUntilJobsAreBeingAssigned(th);
0105 }
0106 
0107 }