8 #ifndef ossimJob_HEADER 9 #define ossimJob_HEADER 71 ossimJobCallback(std::shared_ptr<ossimJobCallback> nextCallback=0):m_nextCallback(nextCallback){}
73 virtual void ready(std::shared_ptr<ossimJob> job) {
if(m_nextCallback) m_nextCallback->ready(job); }
74 virtual void started(std::shared_ptr<ossimJob> job) {
if(m_nextCallback) m_nextCallback->started(job); }
75 virtual void finished(std::shared_ptr<ossimJob> job) {
if(m_nextCallback) m_nextCallback->finished(job);}
76 virtual void canceled(std::shared_ptr<ossimJob> job) {
if(m_nextCallback) m_nextCallback->canceled(job);}
79 {
if(m_nextCallback) m_nextCallback->nameChanged(name, job);}
82 {
if(m_nextCallback) m_nextCallback->descriptionChanged(description, job);}
85 {
if(m_nextCallback) m_nextCallback->idChanged(
id, job);}
88 {
if(m_nextCallback) m_nextCallback->percentCompleteChanged(percentValue, job);}
90 void setCallback(std::shared_ptr<ossimJobCallback> c){m_nextCallback = c;}
91 std::shared_ptr<ossimJobCallback>
callback(){
return m_nextCallback;}
152 typedef std::list<std::shared_ptr<ossimJob> >
List;
162 ossimJob_RUNNING = 2,
164 ossimJob_FINISHED = 8,
165 ossimJob_ALL = (ossimJob_READY|ossimJob_RUNNING|ossimJob_CANCEL|ossimJob_FINISHED)
168 ossimJob() : m_state(ossimJob_READY), m_priority(0.0) {}
177 virtual void start();
186 return shared_from_this();
196 return shared_from_this();
207 std::lock_guard<std::mutex> lock(m_jobMutex);
210 m_callback->percentCompleteChanged(value, getSharedFromThis());
221 std::lock_guard<std::mutex> lock(m_jobMutex);
244 std::lock_guard<std::mutex> lock(m_jobMutex);
258 m_state = ossimJob_NONE;
276 virtual void setState(
int value,
bool on=
true);
284 std::lock_guard<std::mutex> lock(m_jobMutex);
285 return (m_state & ossimJob_CANCEL);
294 setState(ossimJob_CANCEL);
302 resetState(ossimJob_READY);
310 resetState(ossimJob_RUNNING);
321 std::lock_guard<std::mutex> lock(m_jobMutex);
322 newState = ((m_state & ossimJob_CANCEL) |
323 (ossimJob_FINISHED));
326 resetState(newState);
334 std::lock_guard<std::mutex> lock(m_jobMutex);
335 return m_state & ossimJob_READY;
343 std::lock_guard<std::mutex> lock(m_jobMutex);
344 return (m_state & ossimJob_FINISHED);
352 std::lock_guard<std::mutex> lock(m_jobMutex);
353 return (m_state & ossimJob_FINISHED);
361 std::lock_guard<std::mutex> lock(m_jobMutex);
362 return (m_state & ossimJob_RUNNING);
370 std::lock_guard<std::mutex> lock(m_jobMutex);
371 m_callback = callback;
381 bool changed =
false;
382 std::shared_ptr<ossimJobCallback> callback;
384 std::lock_guard<std::mutex> lock(m_jobMutex);
385 changed = value!=m_name;
387 callback = m_callback;
389 if(changed&&callback)
391 callback->nameChanged(value, getSharedFromThis());
400 std::lock_guard<std::mutex> lock(m_jobMutex);
411 bool changed =
false;
412 std::shared_ptr<ossimJobCallback> callback;
414 std::lock_guard<std::mutex> lock(m_jobMutex);
415 changed = value!=m_id;
417 callback = m_callback;
419 if(changed&&callback)
421 callback->idChanged(value, getSharedFromThis());
430 std::lock_guard<std::mutex> lock(m_jobMutex);
439 bool changed =
false;
440 std::shared_ptr<ossimJobCallback> callback;
442 std::lock_guard<std::mutex> lock(m_jobMutex);
443 changed = value!=m_description;
444 m_description = value;
445 callback = m_callback;
447 if(changed&&callback)
449 callback->descriptionChanged(value, getSharedFromThis());
458 std::lock_guard<std::mutex> lock(m_jobMutex);
459 return m_description;
465 std::shared_ptr<ossimJobCallback>
callback() {
return m_callback;}
480 virtual void run()=0;
const ossimString & id() const
virtual void resetState(int value)
Will clear out the state and the call setState.
virtual void descriptionChanged(const ossimString &description, std::shared_ptr< ossimJob > job)
ossimString m_description
void setCallback(std::shared_ptr< ossimJobCallback > c)
virtual void cancel()
Sets the state if the object as cancelled.
State
This is a Bit vector.
virtual void ready()
Sets the state if the object as ready.
virtual void nameChanged(const ossimString &name, std::shared_ptr< ossimJob > job)
std::shared_ptr< ossimJobCallback > m_callback
void setDescription(const ossimString &value)
virtual void idChanged(const ossimString &id, std::shared_ptr< ossimJob > job)
void setCallback(std::shared_ptr< ossimJobCallback > callback)
virtual void release()
If derived interfaces implement a block this will allow one to release.
std::shared_ptr< ossimJobCallback > m_nextCallback
const ossimString & description() const
void setPriority(double value)
sets the priority of the job
virtual void finished()
Sets the state if the object as finished.
std::shared_ptr< ossimJobCallback > callback()
std::list< std::shared_ptr< ossimJob > > List
virtual void percentCompleteChanged(double percentValue, std::shared_ptr< ossimJob > job)
void setName(const ossimString &value)
Sets the name of a job.
virtual void started(std::shared_ptr< ossimJob > job)
This is the job callback interface It allows one to attach and listen for different states of the job...
std::shared_ptr< const ossimJob > getSharedFromThis() const
This is a convenience method to get the shared representation of this pointer.
void setId(const ossimString &value)
virtual void ready(std::shared_ptr< ossimJob > job)
virtual void running()
Sets the state if the object as running.
std::shared_ptr< ossimJobCallback > callback()
virtual void canceled(std::shared_ptr< ossimJob > job)
std::shared_ptr< ossimJob > getSharedFromThis()
This is a convenience method to get the shared representation of this pointer.
const ossimString & name() const
virtual void finished(std::shared_ptr< ossimJob > job)
void setPercentComplete(double value)
When the pernet complete is set for the job it will call any callbacks and nofity percentCompleteChan...
This is the job callback interface It allows one to attach and listen for different states of the job...
ossimJobCallback(std::shared_ptr< ossimJobCallback > nextCallback=0)