ThreadWeaver
WeaverInterface.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef WeaverInterface_H
00030 #define WeaverInterface_H
00031
00032 #include <QtCore/QObject>
00033
00034 #include <threadweaver/threadweaver_export.h>
00035
00036 namespace ThreadWeaver {
00037
00038 class Job;
00039 class State;
00040 class WeaverObserver;
00041
00061 class THREADWEAVER_EXPORT WeaverInterface : public QObject {
00062 Q_OBJECT
00063
00064 public:
00068 explicit WeaverInterface ( QObject* parent = 0 );
00069 virtual ~WeaverInterface() {}
00071 virtual const State& state() const = 0;
00072
00074 virtual void setMaximumNumberOfThreads( int cap ) = 0;
00075
00077 virtual int maximumNumberOfThreads() const = 0;
00078
00080 virtual int currentNumberOfThreads () const = 0;
00081
00092 virtual void registerObserver ( WeaverObserver* ) = 0;
00101 virtual void enqueue ( Job* ) = 0;
00111 virtual bool dequeue ( Job* ) = 0;
00115 virtual void dequeue () = 0;
00126 virtual void finish () = 0;
00136 virtual void suspend () = 0;
00140 virtual void resume () = 0;
00143 virtual bool isEmpty () const = 0;
00147 virtual bool isIdle () const = 0;
00153 virtual int queueLength () const = 0;
00154
00160 virtual void requestAbort() = 0;
00161
00162 Q_SIGNALS:
00169 void finished ();
00170
00175 void suspended ();
00176
00182 void jobDone ( ThreadWeaver::Job* );
00183
00184
00185
00186
00188 void stateChanged ( ThreadWeaver::State* );
00189 };
00190
00191 }
00192
00193 #endif