From 9fc48c9a6b9d8fcb485d06f4cc65261ac34351da Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 13 Aug 2009 23:51:40 +0000 Subject: [PATCH] always arm the send independent of how many messages are placed in the out buf. The send will not arm if the out buf is empty. --- src/cas/generic/st/casDGIntfOS.cc | 37 +++++++++++++------------------ 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/cas/generic/st/casDGIntfOS.cc b/src/cas/generic/st/casDGIntfOS.cc index 7a2cf62ad..c3f508694 100644 --- a/src/cas/generic/st/casDGIntfOS.cc +++ b/src/cas/generic/st/casDGIntfOS.cc @@ -137,20 +137,18 @@ void casDGEvWakeup::show ( unsigned level ) const // epicsTimerNotify::expireStatus casDGEvWakeup::expire ( const epicsTime & /* currentTime */ ) { - casEventSys::processStatus ps = this->pOS->eventSysProcess (); - if ( ps.nAccepted > 0u ) { - // We do not wait for any impartial, or complete, - // messages in the input queue to be processed - // because. - // A) IO postponement might be preventing the - // input queue processing from proceeding. - // B) Since both reads and events get processed - // before going back to select to find out if we - // can do a write then we naturally tend to - // combine get responses and subscription responses - // into one write. - this->pOS->armSend (); - } + this->pOS->eventSysProcess (); + // We do not wait for any impartial, or complete, + // messages in the input queue to be processed + // because. + // A) IO postponement might be preventing the + // input queue processing from proceeding. + // B) Since both reads and events get processed + // before going back to select to find out if we + // can do a write then we naturally tend to + // combine get responses and subscription responses + // into one write. + this->pOS->armSend (); this->pOS = 0; return noRestart; } @@ -183,8 +181,7 @@ epicsTimerNotify :: expireStatus { caStatus status = this->pOS->processDG (); if ( status != S_cas_success && - status != S_cas_sendBlocked && - status != S_casApp_postponeAsyncIO ) { + status != S_cas_sendBlocked ) { char pName[64u]; this->pOS->hostName (pName, sizeof (pName)); errPrintf (status, __FILE__, __LINE__, @@ -423,11 +420,10 @@ void casDGIntfOS::sendCB() // caStatus status = this->processDG (); if ( status != S_cas_success && - status != S_cas_sendBlocked && - status != S_casApp_postponeAsyncIO ) { + status != S_cas_sendBlocked ) { char pName[64u]; this->hostName (pName, sizeof (pName)); - errPrintf (status, __FILE__, __LINE__, + errPrintf ( status, __FILE__, __LINE__, "unexpected problem with UDP input from \"%s\"", pName); } } @@ -463,8 +459,7 @@ void casDGIntfOS :: recvCB ( inBufClient::fillParameter parm ) this->inBufFill ( parm ); caStatus status = this->processDG (); if ( status != S_cas_success && - status != S_cas_sendBlocked && - status != S_casApp_postponeAsyncIO ) { + status != S_cas_sendBlocked ) { char pName[64u]; this->hostName (pName, sizeof (pName)); errPrintf (status, __FILE__, __LINE__,