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>

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. More...
 
void scavenge (bool clearNow=false)
 Call from a non-RT thread. More...
 

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
 

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

◆ ObjectTimePair

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

Definition at line 64 of file Scavenger.h.

◆ ObjectTimeList

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

Definition at line 65 of file Scavenger.h.

◆ ObjectList

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

Definition at line 69 of file Scavenger.h.

Constructor & Destructor Documentation

◆ Scavenger()

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

Definition at line 97 of file Scavenger.h.

◆ ~Scavenger()

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

Definition at line 107 of file Scavenger.h.

Member Function Documentation

◆ claim()

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().

◆ scavenge()

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().

◆ pushExcess()

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

Definition at line 179 of file Scavenger.h.

◆ clearExcess()

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

Definition at line 191 of file Scavenger.h.

Member Data Documentation

◆ m_objects

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

Definition at line 66 of file Scavenger.h.

◆ m_sec

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

Definition at line 67 of file Scavenger.h.

◆ m_excess

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

Definition at line 70 of file Scavenger.h.

◆ m_lastExcess

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

Definition at line 71 of file Scavenger.h.

◆ m_excessMutex

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

Definition at line 72 of file Scavenger.h.

◆ m_claimed

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

Definition at line 76 of file Scavenger.h.

◆ m_scavenged

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: