OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Member Functions | Private Attributes | Friends | List of all members
ossimMultiThreadSequencer::ossimGetTileJob Class Reference

Private class representing a getTile job. More...

#include <ossimMultiThreadSequencer.h>

Inheritance diagram for ossimMultiThreadSequencer::ossimGetTileJob:
ossimJob

Public Member Functions

 ossimGetTileJob (ossim_uint32 tile_id, ossim_uint32 chain_id, ossimMultiThreadSequencer &sequencer)
 
- Public Member Functions inherited from ossimJob
 ossimJob ()
 
virtual void start ()
 Main entry point to the job. More...
 
std::shared_ptr< ossimJobgetSharedFromThis ()
 This is a convenience method to get the shared representation of this pointer. More...
 
std::shared_ptr< const ossimJobgetSharedFromThis () const
 This is a convenience method to get the shared representation of this pointer. More...
 
void setPercentComplete (double value)
 When the pernet complete is set for the job it will call any callbacks and nofity percentCompleteChanged. More...
 
void setPriority (double value)
 sets the priority of the job More...
 
double priority () const
 
virtual void release ()
 If derived interfaces implement a block this will allow one to release. More...
 
State state () const
 
virtual void resetState (int value)
 Will clear out the state and the call setState. More...
 
virtual void setState (int value, bool on=true)
 Will allow you to set the state of the job. More...
 
bool isCanceled () const
 
virtual void cancel ()
 Sets the state if the object as cancelled. More...
 
virtual void ready ()
 Sets the state if the object as ready. More...
 
virtual void running ()
 Sets the state if the object as running. More...
 
virtual void finished ()
 Sets the state if the object as finished. More...
 
bool isReady () const
 
bool isStopped () const
 
bool isFinished () const
 
bool isRunning () const
 
void setCallback (std::shared_ptr< ossimJobCallback > callback)
 
void setName (const ossimString &value)
 Sets the name of a job. More...
 
const ossimStringname () const
 
void setId (const ossimString &value)
 
const ossimStringid () const
 
void setDescription (const ossimString &value)
 
const ossimStringdescription () const
 
std::shared_ptr< ossimJobCallbackcallback ()
 

Protected Member Functions

virtual void run ()
 Abstract method and must be overriden by the base class. More...
 

Private Attributes

ossim_uint32 m_tileID
 
ossim_uint32 m_chainID
 
ossimMultiThreadSequencerm_sequencer
 
bool t_launchNewJob
 

Friends

class ossimMultiThreadSequencer
 

Additional Inherited Members

- Public Types inherited from ossimJob
enum  State {
  ossimJob_NONE = 0, ossimJob_READY = 1, ossimJob_RUNNING = 2, ossimJob_CANCEL = 4,
  ossimJob_FINISHED = 8, ossimJob_ALL = (ossimJob_READY|ossimJob_RUNNING|ossimJob_CANCEL|ossimJob_FINISHED)
}
 
This is a Bit vector. More...
 
typedef std::list< std::shared_ptr< ossimJob > > List
 
- Protected Attributes inherited from ossimJob
std::mutex m_jobMutex
 
ossimString m_name
 
ossimString m_description
 
ossimString m_id
 
State m_state
 
double m_priority
 
std::shared_ptr< ossimJobCallbackm_callback
 

Detailed Description

Private class representing a getTile job.

Definition at line 78 of file ossimMultiThreadSequencer.h.

Constructor & Destructor Documentation

◆ ossimGetTileJob()

ossimMultiThreadSequencer::ossimGetTileJob::ossimGetTileJob ( ossim_uint32  tile_id,
ossim_uint32  chain_id,
ossimMultiThreadSequencer sequencer 
)
inline

Member Function Documentation

◆ run()

void ossimMultiThreadSequencer::ossimGetTileJob::run ( )
protectedvirtual

Abstract method and must be overriden by the base class.

The base ossimJob will call run from the start method after setting some variables.

Implements ossimJob.

Definition at line 27 of file ossimMultiThreadSequencer.cpp.

References ossimMultiThreadSequencer::d_debugEnabled, ossimImageData::dup(), ossimJob::finished(), ossimImageChainMtAdaptor::getClone(), ossimImageSource::getTile(), ossimImageSourceSequencer::getTileRect(), ossimTimer::instance(), m_chainID, ossimMultiThreadSequencer::m_getTileBlock, ossimMultiThreadSequencer::m_inputChain, m_sequencer, m_tileID, ossimMultiThreadSequencer::nextJob(), ossimMultiThreadSequencer::print(), ossim::Block::release(), ossimJob::running(), ossimImageData::setImageRectangle(), ossimMultiThreadSequencer::setTileInCache(), t_launchNewJob, ossimImageSourceSequencer::theBlankTile, ossimTimer::time_s(), and ossimRefPtr< T >::valid().

28 {
29  running();
31  {
32  ostringstream s1;
33  s1<<"THREAD #"<<m_chainID<<" -- Starting tile/job #"<<m_tileID;
34  m_sequencer.print(s1);
35  }
36 
37  // Figure out the rect for this tile. Only process if rect is valid:
38  ossimIrect tileRect;
39  if (m_sequencer.getTileRect(m_tileID, tileRect))
40  {
41  // Perform the getTile and save the result:
44  double dt = ossimTimer::instance()->time_s(); //###
45 
46  if (source != NULL)
47  tile = source->getTile(tileRect);
48  if (!tile.valid())
49  {
51  tile->setImageRectangle(tileRect);
52  }
53  dt = ossimTimer::instance()->time_s() - dt; //###
54 
55  // Give the sequencer the tile. Execution may pause here while waiting for space to free up
56  // if the cache is full.
58  }
59 
60  // Unblock the main thread which might be blocked waiting for jobs to finish:
62 
63  // Queue the next job using this job's freed-up image chain:
64  if (t_launchNewJob)
66 
67  finished();
68 
70  {
71  ostringstream s2;
72  s2<<"THREAD #"<<m_chainID<<" -- Finished tile/job #"<<m_tileID;
73  m_sequencer.print(s2);
74  }
75 }
void nextJob(ossim_uint32 chain_id)
Method to job queue with scope lock to avoid multiple threads modifying the queue simultaneously...
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
virtual void setImageRectangle(const ossimIrect &rect)
bool valid() const
Definition: ossimRefPtr.h:75
void setTileInCache(ossim_uint32 tile_id, ossimImageData *tile, ossim_uint32 chain_id, double dt)
Access method to tile cache with scope lock to avoid multiple threads writing to the cache simultaneo...
bool getTileRect(ossim_int64 tile_id, ossimIrect &rect) const
Establishes a tile rect given tile ID.
void print(ostringstream &msg) const
For debug – thread-safe console output.
ossimRefPtr< ossimImageChainMtAdaptor > m_inputChain
Same as base class&#39; theInputConnection.
virtual ossimObject * dup() const
void release()
Releases the threads and will not return until all threads are released.
Definition: Block.cpp:66
static ossimTimer * instance()
Definition: ossimTimer.cpp:19
double time_s() const
Get elapsed time in seconds.
Definition: ossimTimer.h:33
virtual void finished()
Sets the state if the object as finished.
Definition: ossimJob.h:316
ossimImageSource * getClone(ossim_uint32 index)
Returns pointer to a specific clone image chain, or NULL if index exceeds the max available...
ossimRefPtr< ossimImageData > theBlankTile
virtual void running()
Sets the state if the object as running.
Definition: ossimJob.h:308
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)

Friends And Related Function Documentation

◆ ossimMultiThreadSequencer

friend class ossimMultiThreadSequencer
friend

Definition at line 95 of file ossimMultiThreadSequencer.h.

Member Data Documentation

◆ m_chainID

ossim_uint32 ossimMultiThreadSequencer::ossimGetTileJob::m_chainID
private

Definition at line 91 of file ossimMultiThreadSequencer.h.

Referenced by run().

◆ m_sequencer

ossimMultiThreadSequencer& ossimMultiThreadSequencer::ossimGetTileJob::m_sequencer
private

Definition at line 92 of file ossimMultiThreadSequencer.h.

Referenced by run().

◆ m_tileID

ossim_uint32 ossimMultiThreadSequencer::ossimGetTileJob::m_tileID
private

Definition at line 90 of file ossimMultiThreadSequencer.h.

Referenced by run().

◆ t_launchNewJob

bool ossimMultiThreadSequencer::ossimGetTileJob::t_launchNewJob
private

Definition at line 94 of file ossimMultiThreadSequencer.h.

Referenced by run().


The documentation for this class was generated from the following files: