#ifndef ossimJobThreadQueue_HEADER #define ossimJobThreadQueue_HEADER #include #include #include class OSSIM_DLL ossimJobThreadQueue : public ossimReferenced, public OpenThreads::Thread { public: ossimJobThreadQueue(ossimJobQueue* jqueue=0); void setJobQueue(ossimJobQueue* jqueue); ossimJobQueue* getJobQueue(); const ossimJobQueue* getJobQueue() const; ossimRefPtr currentJob(); void cancelCurrentJob(); bool isValidQueue()const; virtual void run(); void setDone(bool done); bool isDone()const; virtual int cancel(); bool isEmpty()const; bool isProcessingJob()const; bool hasJobsToProcess()const; protected: virtual ~ossimJobThreadQueue(); void startThreadForQueue(); virtual ossimRefPtr nextJob(); bool m_doneFlag; mutable OpenThreads::Mutex m_threadMutex; ossimRefPtr m_jobQueue; ossimRefPtr m_currentJob; }; #endif