delete timer via timer queue

This commit is contained in:
Jeff Hill
2001-07-11 23:16:34 +00:00
parent 71fa55fd2a
commit 8ffb5e5fb9
11 changed files with 99 additions and 91 deletions

View File

@@ -32,22 +32,6 @@
#include "epicsTimer.h"
#include "timerPrivate.h"
struct epicsTimerForC : public epicsTimerNotify, public timer {
public:
epicsTimerForC ( timerQueue &, epicsTimerCallback, void *pPrivateIn );
void destroy ();
void * operator new ( size_t size );
void operator delete ( void *pCadaver, size_t size );
protected:
virtual ~epicsTimerForC ();
private:
epicsTimerCallback pCallBack;
void * pPrivate;
expireStatus expire ( const epicsTime & currentTime );
static tsFreeList < epicsTimerForC > freeList;
static epicsMutex freeListMutex;
};
struct epicsTimerQueuePassiveForC : public epicsTimerQueueNotify, public timerQueuePassive {
public:
epicsTimerQueuePassiveForC ( epicsTimerQueueRescheduleCallback pCallback, void *pPrivate );
@@ -66,33 +50,14 @@ private:
void epicsTimerNotify::show ( unsigned /* level */ ) const {}
tsFreeList < epicsTimerForC > epicsTimerForC::freeList;
epicsMutex epicsTimerForC::freeListMutex;
epicsTimerForC::epicsTimerForC ( timerQueue &queue, epicsTimerCallback pCBIn, void *pPrivateIn ) :
timer ( queue ), pCallBack ( pCBIn ), pPrivate ( pPrivateIn )
{
}
epicsTimerForC::~epicsTimerForC ()
{
}
inline void epicsTimerForC::destroy ()
{
delete this;
}
inline void * epicsTimerForC::operator new ( size_t size )
{
epicsAutoMutex locker ( epicsTimerForC::freeListMutex );
return epicsTimerForC::freeList.allocate ( size );
}
inline void epicsTimerForC::operator delete ( void *pCadaver, size_t size )
{
epicsAutoMutex locker ( epicsTimerForC::freeListMutex );
epicsTimerForC::freeList.release ( pCadaver, size );
this->destroyTimerForC ( *this );
}
epicsTimerNotify::expireStatus epicsTimerForC::expire ( const epicsTime & )