OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimJobQueue.h
Go to the documentation of this file.
1 //**************************************************************************************************
2 // OSSIM -- Open Source Software Image Map
3 //
4 // LICENSE: See top level LICENSE.txt file.
5 //
6 //**************************************************************************************************
7 // $Id$
8 #ifndef ossimJobQueue_HEADER
9 #define ossimJobQueue_HEADER
10 
12 #include <ossim/base/Block.h>
13 #include <mutex>
14 #include <memory>
15 
84 class OSSIM_DLL ossimJobQueue : public std::enable_shared_from_this<ossimJobQueue>
85 {
86 public:
93  {
94  public:
96 
103  virtual void adding(std::shared_ptr<ossimJobQueue> /*q*/,
104  std::shared_ptr<ossimJob> /*job*/){};
105 
111  virtual void added(std::shared_ptr<ossimJobQueue> /*q*/,
112  std::shared_ptr<ossimJob> /*job*/){}
113 
114 
120  virtual void removed(std::shared_ptr<ossimJobQueue> /*q*/,
121  std::shared_ptr<ossimJob>/*job*/){}
122  };
123 
127  ossimJobQueue();
128 
133  std::shared_ptr<ossimJobQueue> getSharedFromThis(){
134  return shared_from_this();
135  }
136 
141  std::shared_ptr<const ossimJobQueue> getSharedFromThis()const{
142  return shared_from_this();
143  }
144 
153  virtual void add(std::shared_ptr<ossimJob> job, bool guaranteeUniqueFlag=true);
154 
161  virtual std::shared_ptr<ossimJob> removeByName(const ossimString& name);
162 
169  virtual std::shared_ptr<ossimJob> removeById(const ossimString& id);
170 
176  virtual void remove(const std::shared_ptr<ossimJob> Job);
177 
181  virtual void removeStoppedJobs();
182 
186  virtual void clear();
187 
197  virtual std::shared_ptr<ossimJob> nextJob(bool blockIfEmptyFlag=true);
198 
202  virtual void releaseBlock();
203 
207  bool isEmpty()const;
208 
212  ossim_uint32 size();
213 
219  void setCallback(std::shared_ptr<Callback> c);
220 
224  std::shared_ptr<Callback> callback();
225 
226 protected:
233  ossimJob::List::iterator findById(const ossimString& id);
234 
241  ossimJob::List::iterator findByName(const ossimString& name);
242 
249  ossimJob::List::iterator findByPointer(const std::shared_ptr<ossimJob> job);
250 
257  ossimJob::List::iterator findByNameOrPointer(const std::shared_ptr<ossimJob> job);
258 
264  bool hasJob(std::shared_ptr<ossimJob> job);
265 
266  mutable std::mutex m_jobQueueMutex;
269  std::shared_ptr<Callback> m_callback;
270 };
271 
272 #endif
std::shared_ptr< ossimJobQueue > getSharedFromThis()
This is the safe way to create a std::shared_ptr for &#39;this&#39;.
virtual void removed(std::shared_ptr< ossimJobQueue >, std::shared_ptr< ossimJob >)
Called after a job is removed from the queue.
ossim::Block m_block
virtual void adding(std::shared_ptr< ossimJobQueue >, std::shared_ptr< ossimJob >)
Called just before a job is added.
ossimJob::List m_jobQueue
std::shared_ptr< Callback > m_callback
yy_size_t size
virtual void added(std::shared_ptr< ossimJobQueue >, std::shared_ptr< ossimJob >)
Called after a job is added to the queue.
unsigned int ossim_uint32
This is a very simple block interface.
Definition: Block.h:45
std::list< std::shared_ptr< ossimJob > > List
Definition: ossimJob.h:152
#define OSSIM_DLL
This is the base implementation for the job queue.
Definition: ossimJobQueue.h:84
std::mutex m_jobQueueMutex
std::shared_ptr< const ossimJobQueue > getSharedFromThis() const
This is the safe way to create a std::shared_ptr for &#39;this&#39;.
The callback allows one to attach and listen for certain things.
Definition: ossimJobQueue.h:92