20 #define epicsAssertAuthor "Jeff Hill johill@lanl.gov" 26 static const double disconnectGovernorPeriod = 10.0;
30 epicsTimerQueue & queueIn,
32 mutex ( mutexIn ),
timer ( queueIn.createTimer () ),
44 this->
timer.
start ( *
this, disconnectGovernorPeriod );
58 while (
nciu * pChan = this->chanList.
get () ) {
59 pChan->channelNode::listMember =
61 pChan->serviceShutdownNotify ( cbGuard, guard );
65 epicsTimerNotify::expireStatus disconnectGovernorTimer::expire (
69 while (
nciu * pChan = chanList.
get () ) {
70 pChan->channelNode::listMember =
74 return expireStatus ( restart, disconnectGovernorPeriod );
80 ::printf (
"disconnect governor timer: with %u channels pending\n",
81 this->chanList.
count () );
84 while ( pChan.
valid () ) {
85 pChan->
show ( level - 1u );
95 this->chanList.
add ( chan );
96 chan.channelNode::listMember = channelNode::cs_disconnGov;
103 this->chanList.
remove ( chan );
104 chan.channelNode::listMember = channelNode::cs_none;
void uninstallChan(epicsGuard< epicsMutex > &, nciu &)
void show(unsigned level) const
tsDLIterConst< T > firstIter() const
void assertIdenticalMutex(const T &) const
disconnectGovernorTimer(class disconnectGovernorNotify &, epicsTimerQueue &, epicsMutex &)
virtual void govExpireNotify(epicsGuard< epicsMutex > &, nciu &)=0
virtual ~disconnectGovernorTimer()
void show(unsigned level) const
void shutdown(epicsGuard< epicsMutex > &cbGuard, epicsGuard< epicsMutex > &guard)
virtual ~disconnectGovernorNotify()=0
void installChan(epicsGuard< epicsMutex > &, nciu &)
void start(class epicsTimerNotify &, const epicsTime &)