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 }