From 8ace886cfef46315704e10d2c4515d90b7bead94 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 13 Aug 2009 23:42:37 +0000 Subject: [PATCH] o added new ioQue so the server will not wedge one of its clients when simultaneouly in flow control mode and also asynchronous io postponed mode. o simplified the status from the process func because callers should not need to know how many messages have been sent --- src/cas/generic/casEventSys.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/cas/generic/casEventSys.h b/src/cas/generic/casEventSys.h index 12e73f1bc..d8f55c2ec 100644 --- a/src/cas/generic/casEventSys.h +++ b/src/cas/generic/casEventSys.h @@ -68,12 +68,7 @@ public: casEventSys ( casCoreClient & ); ~casEventSys (); void show ( unsigned level ) const; - struct processStatus { - casProcCond cond; - unsigned nAccepted; - }; - processStatus process ( - epicsGuard < casClientMutex > & guard ); + casProcCond process ( epicsGuard < casClientMutex > & guard ); void installMonitor (); void removeMonitor (); void prepareMonitorForDestroy ( casMonitor & mon ); @@ -97,6 +92,7 @@ public: private: mutable evSysMutex mutex; tsDLList < casEvent > eventLogQue; + tsDLList < casEvent > ioQue; tsFreeList < casMonEvent, 1024, epicsMutexNOOP > casMonEventFreeList; casCoreClient & client; class casEventPurgeEv * pPurgeEvent; // flow control purge complete event @@ -104,7 +100,7 @@ private: unsigned maxLogEntries; // max log entries bool destroyPending; bool replaceEvents; // replace last existing event on queue - bool dontProcess; // flow ctl is on - dont process event queue + bool dontProcessSubscr; // flow ctl is on - dont process subscr event queue bool full () const; casEventSys ( const casEventSys & ); @@ -141,7 +137,7 @@ inline casEventSys::casEventSys ( casCoreClient & clientIn ) : maxLogEntries ( individualEventEntries ), destroyPending ( false ), replaceEvents ( false ), - dontProcess ( false ) + dontProcessSubscr ( false ) { }