17 #define epicsAssertAuthor "Jeff Hill johill@lanl.gov"    28     client ( cacIn ), magic ( CASG_MAGIC )
    30     client.installCASG ( guard, *
this );
    43     if ( this->
verify ( guard ) ) {
    44         this->
reset ( cbGuard, guard );
    45         this->
client.uninstallCASG ( guard, *
this );
    49         this->
printFormated ( 
"cac: attempt to destroy invalid sync group ignored\n" );
    56     return ( this->
magic == CASG_MAGIC );
    81     if ( timeout < 0.0 ) {
    85     cur_time = epicsTime::getCurrent ();
    87     this->
client.flush ( guard );
    93         if ( this->ioPendingList.count() == 0u ) {
    98         remaining = timeout - delay;
   112                 this->
sem.wait ( remaining );
   117             this->
sem.wait ( remaining );
   123         cur_time = epicsTime::getCurrent ();
   125         delay = cur_time - beg_time;
   148         pNotify->
destroy ( cbGuard, guard );
   158         pNotify->cancel ( cbGuard, guard );
   162         if ( pNotify->ioPending ( guard ) ) {
   163             this->ioPendingList.remove ( *pNotify );
   168         pNotify->destroy ( cbGuard, guard );
   175     this->
show ( guard, level );
   182     ::printf ( 
"Sync Group: id=%u, magic=%u, opPend=%u\n",
   183         this->
getId (), this->
magic, this->ioPendingList.count () );
   187             this->ioPendingList.firstIter ();
   188         while ( notifyPending.
valid () ) {
   189             notifyPending->
show ( guard, level - 1u );
   195         while ( notifyCompleted.
valid () ) {
   196             notifyCompleted->
show ( guard, level - 1u );
   208     return this->ioPendingList.count () == 0u;
   218     pNotify->
begin ( guard, type, count, pValue );
   229     pNotify->
begin ( guard, type, count );
   237     this->ioPendingList.remove ( notify );
   239     if ( this->ioPendingList.count () == 0u ) {
   263     va_start ( theArgs, pformat );
   265     status = this->
client.varArgsPrintFormated ( pformat, theArgs );
   272 void CASG::exception (
   284 void CASG::exception (
   298 void CASG::operator 
delete ( 
void * )
   305     errlogPrintf ( 
"%s:%d this compiler is confused about placement delete - memory was probably leaked",
   306         __FILE__, __LINE__ );
 
void exception epicsGuard< epicsMutex > int const char const char unsigned oldChannelNotify & chan
void reset(CallbackGuard &, epicsGuard< epicsMutex > &)
tsFreeList< class syncGroupReadNotify, 128, epicsMutexNOOP > freeListReadOP
LIBCOM_API void *epicsStdCall epicsThreadPrivateGet(epicsThreadPrivateId)
static syncGroupReadNotify * factory(tsFreeList< class syncGroupReadNotify, 128, epicsMutexNOOP > &, CASG &, PRecycleFunc, chid, void *pValueIn)
void destructor(CallbackGuard &, epicsGuard< epicsMutex > &guard)
void assertIdenticalMutex(const T &) const 
void exception epicsGuard< epicsMutex > int const char const char unsigned oldChannelNotify unsigned type
void recycleReadNotifyIO(epicsGuard< epicsMutex > &, syncGroupReadNotify &)
epicsThreadPrivateId caClientCallbackThreadId
const unsigned getId() const
virtual void show(epicsGuard< epicsMutex > &, unsigned level) const =0
void show(epicsGuard< epicsMutex > &, unsigned level) const 
bool verify(epicsGuard< epicsMutex > &) const 
void exception epicsGuard< epicsMutex > int const char const char unsigned oldChannelNotify unsigned arrayElementCount unsigned op
int block(epicsGuard< epicsMutex > *pcbGuard, epicsGuard< epicsMutex > &guard, double timeout)
static syncGroupWriteNotify * factory(tsFreeList< class syncGroupWriteNotify, 128, epicsMutexNOOP > &, CASG &, PRecycleFunc, chid)
void exception epicsGuard< epicsMutex > int const char const char * pFileName
void exception epicsGuard< epicsMutex > int const char const char unsigned oldChannelNotify unsigned arrayElementCount count
void recycleWriteNotifyIO(epicsGuard< epicsMutex > &, syncGroupWriteNotify &)
int errlogPrintf(const char *pFormat,...)
tsFreeList< class syncGroupWriteNotify, 128, epicsMutexNOOP > freeListWriteOP
bool ioComplete(CallbackGuard &, epicsGuard< epicsMutex > &guard)
virtual void destroy(CallbackGuard &cbGuard, epicsGuard< epicsMutex > &guard)=0
unsigned long arrayElementCount
void put(epicsGuard< epicsMutex > &, chid pChan, unsigned type, arrayElementCount count, const void *pValue)
void destroyPendingIO(CallbackGuard &cbGuard, epicsGuard< epicsMutex > &guard)
void exception epicsGuard< epicsMutex > int const char * pContext
void get(epicsGuard< epicsMutex > &, chid pChan, unsigned type, arrayElementCount count, void *pValue)
epicsPlacementDeleteOperator((void *, tsFreeList< struct CASG, 128, epicsMutexNOOP > &)) private tsDLList< syncGroupNotify ioCompletedList)
void exception epicsGuard< epicsMutex > int status
int printFormated(const char *pFormat,...)
void completionNotify(epicsGuard< epicsMutex > &, syncGroupNotify &)
#define CAC_SIGNIFICANT_DELAY
void begin(epicsGuard< epicsMutex > &, unsigned type, arrayElementCount count)
CASG(epicsGuard< epicsMutex > &, ca_client_context &cacIn)
void destroyCompletedIO(CallbackGuard &cbGuard, epicsGuard< epicsMutex > &guard)
void begin(epicsGuard< epicsMutex > &, unsigned type, arrayElementCount count, const void *pValueIn)
void exception epicsGuard< epicsMutex > int const char const char unsigned lineNo