Scavenger< T > Class Template Reference

#include <Scavenger.h>

List of all members.


Detailed Description

template<typename T>
class Scavenger< T >

A very simple class that facilitates running things like plugins without locking, by collecting unwanted objects and deleting them after a delay so as to be sure nobody's in the middle of using them.

Requires scavenge() to be called regularly from a non-RT thread.

This is currently not at all suitable for large numbers of objects -- it's just a quick hack for use with things like plugins.

Definition at line 45 of file Scavenger.h.

Public Member Functions

 Scavenger (int sec=2, int defaultObjectListSize=200)
 ~Scavenger ()
void claim (T *t)
 Call from an RT thread etc., to pass ownership of t to us.
void scavenge (bool clearNow=false)
 Call from a non-RT thread.

Protected Types

typedef std::pair< T *, int > ObjectTimePair
typedef std::vector< ObjectTimePairObjectTimeList
typedef std::list< T * > ObjectList

Protected Member Functions

void pushExcess (T *)
void clearExcess (int)

Protected Attributes

ObjectTimeList m_objects
int m_sec
ObjectList m_excess
int m_lastExcess
QMutex m_excessMutex
unsigned int m_claimed
unsigned int m_scavenged


Member Typedef Documentation

template<typename T>
typedef std::pair<T *, int> Scavenger< T >::ObjectTimePair [protected]

Definition at line 64 of file Scavenger.h.

template<typename T>
typedef std::vector<ObjectTimePair> Scavenger< T >::ObjectTimeList [protected]

Definition at line 65 of file Scavenger.h.

template<typename T>
typedef std::list<T *> Scavenger< T >::ObjectList [protected]

Definition at line 69 of file Scavenger.h.


Constructor & Destructor Documentation

template<typename T>
Scavenger< T >::Scavenger ( int  sec = 2,
int  defaultObjectListSize = 200 
)

Definition at line 97 of file Scavenger.h.

template<typename T>
Scavenger< T >::~Scavenger (  ) 

Definition at line 107 of file Scavenger.h.

References Scavenger< T >::clearExcess(), Scavenger< T >::m_claimed, Scavenger< T >::m_objects, and Scavenger< T >::m_scavenged.


Member Function Documentation

template<typename T>
void Scavenger< T >::claim ( T *  t  ) 

Call from an RT thread etc., to pass ownership of t to us.

Only one thread should be calling this on any given scavenger.

Definition at line 126 of file Scavenger.h.

References Scavenger< T >::m_claimed, Scavenger< T >::m_objects, and Scavenger< T >::pushExcess().

Referenced by DSSIPluginInstance::initialiseGroupMembership(), RingBuffer< T, N >::resize(), and AudioCallbackPlaySource::setAuditioningPlugin().

template<typename T>
void Scavenger< T >::scavenge ( bool  clearNow = false  ) 

Call from a non-RT thread.

Only one thread should be calling this on any given scavenger.

Definition at line 151 of file Scavenger.h.

References Scavenger< T >::clearExcess(), Scavenger< T >::m_claimed, Scavenger< T >::m_lastExcess, Scavenger< T >::m_objects, Scavenger< T >::m_scavenged, and Scavenger< T >::m_sec.

Referenced by DSSIPluginInstance::deactivate(), RingBuffer< T, N >::resize(), RingBuffer< T, N >::RingBuffer(), AudioCallbackPlaySource::FillThread::run(), AudioCallbackPlaySource::~AudioCallbackPlaySource(), and RingBuffer< T, N >::~RingBuffer().

template<typename T>
void Scavenger< T >::pushExcess ( T *   )  [protected]

Definition at line 179 of file Scavenger.h.

References Scavenger< T >::m_excess, Scavenger< T >::m_excessMutex, and Scavenger< T >::m_lastExcess.

Referenced by Scavenger< T >::claim().

template<typename T>
void Scavenger< T >::clearExcess ( int   )  [protected]

Definition at line 191 of file Scavenger.h.

References Scavenger< T >::m_excess, Scavenger< T >::m_excessMutex, and Scavenger< T >::m_lastExcess.

Referenced by Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().


Member Data Documentation

template<typename T>
ObjectTimeList Scavenger< T >::m_objects [protected]

Definition at line 66 of file Scavenger.h.

Referenced by Scavenger< T >::claim(), Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().

template<typename T>
int Scavenger< T >::m_sec [protected]

Definition at line 67 of file Scavenger.h.

Referenced by Scavenger< T >::scavenge().

template<typename T>
ObjectList Scavenger< T >::m_excess [protected]

Definition at line 70 of file Scavenger.h.

Referenced by Scavenger< T >::clearExcess(), and Scavenger< T >::pushExcess().

template<typename T>
int Scavenger< T >::m_lastExcess [protected]

Definition at line 71 of file Scavenger.h.

Referenced by Scavenger< T >::clearExcess(), Scavenger< T >::pushExcess(), and Scavenger< T >::scavenge().

template<typename T>
QMutex Scavenger< T >::m_excessMutex [protected]

Definition at line 72 of file Scavenger.h.

Referenced by Scavenger< T >::clearExcess(), and Scavenger< T >::pushExcess().

template<typename T>
unsigned int Scavenger< T >::m_claimed [protected]

Definition at line 76 of file Scavenger.h.

Referenced by Scavenger< T >::claim(), Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().

template<typename T>
unsigned int Scavenger< T >::m_scavenged [protected]

Definition at line 77 of file Scavenger.h.

Referenced by Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().


The documentation for this class was generated from the following file:
Generated on Wed Feb 20 15:45:35 2008 for SonicVisualiser by  doxygen 1.5.1