svcore  1.9
Scavenger< T > Class Template Reference

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. More...

#include <Scavenger.h>

List of all members.

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
< ObjectTimePair
ObjectTimeList
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

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.


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.


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.

Referenced by DSSIPluginInstance::initialiseGroupMembership().

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.

Referenced by DSSIPluginInstance::deactivate().

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

Definition at line 179 of file Scavenger.h.

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

Definition at line 191 of file Scavenger.h.


Member Data Documentation

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

Definition at line 66 of file Scavenger.h.

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

Definition at line 67 of file Scavenger.h.

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

Definition at line 70 of file Scavenger.h.

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

Definition at line 71 of file Scavenger.h.

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

Definition at line 72 of file Scavenger.h.

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

Definition at line 76 of file Scavenger.h.

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

Definition at line 77 of file Scavenger.h.


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