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

#include <ossimListenerManager.h>

Inheritance diagram for ossimListenerManager:
MEMTiledDataset ossimChipProcTool ossimConnectableObject ossimEquationUtil ossimBandMergeTool ossimHdf5Tool ossimHillshadeTool ossimHlzTool ossimOrthoTool ossimPotraceTool ossimRegTool ossimShorelineTool ossimSlopeTool ossimSubImageTool ossimViewshedTool ossimAtbController ossimConnectableContainer ossimMetadataFileWriter ossimResampler ossimSource

Public Member Functions

 ossimListenerManager ()
 
virtual ~ossimListenerManager ()
 
virtual void fireEvent (ossimEvent &event)
 
virtual bool addListener (ossimListener *listener)
 
virtual bool removeListener (ossimListener *listener)
 
virtual bool findListener (ossimListener *listener)
 

Protected Member Functions

 ossimListenerManager (const ossimListenerManager &rhs)
 

Protected Attributes

std::list< ossimListener * > theListenerList
 
bool theEnabledFlag
 
std::list< ossimListener * > theDelayedAdd
 
std::list< ossimListener * > theDelayedRemove
 
bool theFireEventFlag
 

Detailed Description

Definition at line 20 of file ossimListenerManager.h.

Constructor & Destructor Documentation

◆ ossimListenerManager() [1/2]

ossimListenerManager::ossimListenerManager ( )

Default constructor and needs no initialization.

Definition at line 20 of file ossimListenerManager.cpp.

References theFireEventFlag.

21 {
22  theFireEventFlag = false;
23 }

◆ ~ossimListenerManager()

ossimListenerManager::~ossimListenerManager ( )
virtual

Default destructor. Note the Manager doesn't own the listeners and will not delete them

Definition at line 30 of file ossimListenerManager.cpp.

References theListenerList.

31 {
32  theListenerList.clear();
33 }
std::list< ossimListener * > theListenerList

◆ ossimListenerManager() [2/2]

ossimListenerManager::ossimListenerManager ( const ossimListenerManager rhs)
protected

Will search the list and return the index if found else returns a negative value.

Definition at line 25 of file ossimListenerManager.cpp.

26 {
27 // replaceListeners(rhs.getListeners());
28 }

Member Function Documentation

◆ addListener()

bool ossimListenerManager::addListener ( ossimListener listener)
virtual

Appends the listener onto the list.

Reimplemented in ossimImageFileWriter.

Definition at line 98 of file ossimListenerManager.cpp.

References findListener(), theDelayedAdd, theFireEventFlag, and theListenerList.

Referenced by ossimImageChain::add(), ossimImageChain::addLast(), ossimImageFileWriter::addListener(), ATP::AtpTileSource::AtpTileSource(), ossimImageHandler::buildHistogram(), ossimHistogramWriter::connectInputEvent(), ossimVerticesFinderTool::execute(), fireEvent(), ossimImageChain::insertLeft(), ossimImageChain::insertRight(), ossimImageChain::ossimImageChain(), ossimImageCombiner::ossimImageCombiner(), ossimImageHistogramSource::ossimImageHistogramSource(), ossimImageSourceFilter::ossimImageSourceFilter(), ossimImageSourceSequencer::ossimImageSourceSequencer(), ossimMetadataFileWriter::ossimMetadataFileWriter(), ossimImageChain::removeChild(), ossimImageChain::replace(), ossimHistogramWriter::writeHistogram(), ossimImageFileWriter::writeHistogramFile(), and ossimImageFileWriter::writeOverviewFile().

99 {
100  if(theFireEventFlag)
101  {
102  theDelayedAdd.push_back(listener);
103  }
104  else
105  {
106 
107  if(!findListener(listener))
108  {
109  theListenerList.push_back(listener);
110  }
111  }
112 
113  return true;
114 }
std::list< ossimListener * > theListenerList
virtual bool findListener(ossimListener *listener)
std::list< ossimListener * > theDelayedAdd

◆ findListener()

bool ossimListenerManager::findListener ( ossimListener listener)
virtual

Will find the listener passed in as the first argument and insert the passed in listener before it. If not found then it will default to a push to front.

Will find the listener passed in as the first argument and insert the passed in listener after it. If not found then it will default to an append.

Will insert the listener before the specified listener. If the index is invalid it defaults to a push to front. An invalid index is any index < 0 or larger than the number of items currently in the list.

Will insert the listener after the specified listener. If the index is invalid it defaults to an addListener. An invalid index is any index < 0 or larger than the number of items currently in the list.

Searches the list and sees if a listener is found

Definition at line 142 of file ossimListenerManager.cpp.

References theListenerList.

Referenced by addListener().

143 {
144  bool result = false;
145 
146  if(listener)
147  {
148  std::list<ossimListener*>::iterator currentIter =
149  std::find(theListenerList.begin(),
150  theListenerList.end(),
151  listener);
152  result = (currentIter != theListenerList.end());
153  }
154 
155  return result;
156 }
std::list< ossimListener * > theListenerList

◆ fireEvent()

void ossimListenerManager::fireEvent ( ossimEvent event)
virtual

Traverses through all listeners and fires an event to them. if any listener sets the consumed flag on the event it will stop traversing the list.

Definition at line 35 of file ossimListenerManager.cpp.

References addListener(), ossimEvent::isConsumed(), removeListener(), theDelayedAdd, theDelayedRemove, theFireEventFlag, and theListenerList.

Referenced by ossimImageChain::add(), ossimImageChain::addLast(), ossimConnectableObject::connectInputList(), ossimConnectableObject::connectMyInputTo(), ossimConnectableObject::connectMyOutputTo(), ossimConnectableObject::connectOutputList(), ossimImageChain::deleteFirst(), ossimImageChain::deleteLast(), ossimImageChain::deleteList(), ossimConnectableObject::disconnectAllInputs(), ossimConnectableObject::disconnectAllOutputs(), ossimConnectableObject::disconnectMyInput(), ossimConnectableObject::disconnectMyInputs(), ossimConnectableObject::disconnectMyOutput(), ossimConnectableObject::disconnectMyOutputs(), ossimCacheTileSource::fireProgressEvent(), ossimImageChain::insertLeft(), ossimImageChain::insertRight(), ossimConnectableObject::moveInputDown(), ossimConnectableObject::moveInputToBottom(), ossimConnectableObject::moveInputToTop(), ossimConnectableObject::moveInputUp(), ossimHistogramWriterProcessListener::processProgressEvent(), ossimConnectableObject::propagateEventToInputs(), ossimConnectableObject::propagateEventToOutputs(), ossimImageChain::removeChild(), ossimProcessInterface::setCurrentMessage(), ossimProcessInterface::setPercentComplete(), ossimMetadataFileWriter::setPercentComplete(), ossimVertexExtractor::setPercentComplete(), ossimImageFileWriter::setPercentComplete(), and ossimEventVisitor::visit().

36 {
37  // only process the event if it has not been consumed.
38  event.setCurrentObject( dynamic_cast<ossimObject*>(this) );
39  if(event.isConsumed())
40  {
41  return;
42  }
43  theFireEventFlag = true;
44 
45  std::list<ossimListener*>::iterator currentIterator = theListenerList.begin();
46 
47  while(currentIterator != theListenerList.end())
48  {
49  // only fire if the event is not consumed
50  if(!event.isConsumed())
51  {
52  if(*currentIterator)
53  {
54  if(theDelayedRemove.end()==std::find(theDelayedRemove.begin(),
55  theDelayedRemove.end(),
56  (*currentIterator)))
57  {
58  if((*currentIterator)->isListenerEnabled())
59  {
60  (*currentIterator)->processEvent(event);
61  }
62  }
63  }
64  }
65  else
66  {
67  // the event is now consumed so stop propagating.
68  //
69  theFireEventFlag = false;
70  break;
71  }
72  ++currentIterator;
73  }
74 
75  theFireEventFlag = false;
76 
77  if(theDelayedAdd.size())
78  {
79  for(std::list<ossimListener*>::iterator current = theDelayedAdd.begin();
80  current != theDelayedAdd.end();++current)
81  {
82  addListener(*current);
83  }
84  theDelayedAdd.clear();
85  }
86 
87  if(theDelayedRemove.size())
88  {
89  for(std::list<ossimListener*>::iterator current = theDelayedRemove.begin();
90  current != theDelayedRemove.end();++current)
91  {
92  removeListener(*current);
93  }
94  theDelayedRemove.clear();
95  }
96 }
virtual bool addListener(ossimListener *listener)
std::list< ossimListener * > theListenerList
bool isConsumed() const
Definition: ossimEvent.cpp:49
std::list< ossimListener * > theDelayedAdd
std::list< ossimListener * > theDelayedRemove
virtual bool removeListener(ossimListener *listener)

◆ removeListener()

bool ossimListenerManager::removeListener ( ossimListener listener)
virtual

Will push the lister to the front of the list.

Finds and removes the listener.

Reimplemented in ossimImageFileWriter.

Definition at line 116 of file ossimListenerManager.cpp.

References theDelayedRemove, theFireEventFlag, and theListenerList.

Referenced by ossimImageHandlerMtAdaptor::close(), ossimConnectableContainer::deleteAllChildren(), fireEvent(), ossimImageChain::prepareForRemoval(), ossimConnectableContainer::removeAllListeners(), ossimConnectableContainer::removeChild(), ossimImageFileWriter::removeListener(), ossimImageChain::replace(), ossimImageFileWriter::writeOverviewFile(), ossimImageChain::~ossimImageChain(), ossimImageChainMtAdaptor::~ossimImageChainMtAdaptor(), ossimImageCombiner::~ossimImageCombiner(), ossimImageHistogramSource::~ossimImageHistogramSource(), ossimImageSourceFilter::~ossimImageSourceFilter(), ossimImageSourceSequencer::~ossimImageSourceSequencer(), and ossimMetadataFileWriter::~ossimMetadataFileWriter().

117 {
118 
119  if(theFireEventFlag)
120  {
121  theDelayedRemove.push_back(listener);
122  return true;
123  }
124 
125  std::list<ossimListener*>::iterator current=theListenerList.begin();
126  while(current!=theListenerList.end())
127  {
128  if( (*current) == listener)
129  {
130  current = theListenerList.erase(current);
131  break; // Should only be in list once... (drb)
132  }
133  else
134  {
135  ++current;
136  }
137  }
138 
139  return true;
140 }
std::list< ossimListener * > theListenerList
std::list< ossimListener * > theDelayedRemove

Member Data Documentation

◆ theDelayedAdd

std::list<ossimListener*> ossimListenerManager::theDelayedAdd
mutableprotected

Definition at line 115 of file ossimListenerManager.h.

Referenced by addListener(), and fireEvent().

◆ theDelayedRemove

std::list<ossimListener*> ossimListenerManager::theDelayedRemove
mutableprotected

Definition at line 116 of file ossimListenerManager.h.

Referenced by fireEvent(), and removeListener().

◆ theEnabledFlag

bool ossimListenerManager::theEnabledFlag
protected

Definition at line 114 of file ossimListenerManager.h.

◆ theFireEventFlag

bool ossimListenerManager::theFireEventFlag
mutableprotected

◆ theListenerList

std::list<ossimListener*> ossimListenerManager::theListenerList
protected

Holds the list of listeners.

Definition at line 113 of file ossimListenerManager.h.

Referenced by addListener(), findListener(), fireEvent(), removeListener(), and ~ossimListenerManager().


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