This is Unofficial EPICS BASE Doxygen Site
oldSubscription Struct Reference

#include "oldAccess.h"

+ Inheritance diagram for oldSubscription:
+ Collaboration diagram for oldSubscription:

Public Member Functions

 oldSubscription (epicsGuard< epicsMutex > &guard, oldChannelNotify &chanIn, cacChannel &io, unsigned type, arrayElementCount nElem, unsigned mask, caEventCallBackFunc *pFuncIn, void *pPrivateIn, evid *)
 
 ~oldSubscription ()
 
oldChannelNotifychannel () const
 
void cancel (CallbackGuard &callbackGuard, epicsGuard< epicsMutex > &mutualExclusionGuard)
 
void * operator new (size_t size, tsFreeList< struct oldSubscription, 1024, epicsMutexNOOP > &)
 
void current (epicsGuard< epicsMutex > &, unsigned type, arrayElementCount count, const void *pData)
 
 oldSubscription (const oldSubscription &)
 
oldSubscriptionoperator= (const oldSubscription &)
 
void operator delete (void *)
 

Public Attributes

epicsPlacementDeleteOperator((void *, tsFreeList< struct oldSubscription, 1024, epicsMutexNOOP > &)) private cacChannel::ioi id )
 
caEventCallBackFuncpFunc
 
void * pPrivate
 
void exception epicsGuard< epicsMutex > int status
 
void exception epicsGuard< epicsMutex > int const char * pContext
 
void exception epicsGuard< epicsMutex > int const char unsigned type
 
void exception epicsGuard< epicsMutex > int const char unsigned arrayElementCount count
 

Detailed Description

Definition at line 241 of file oldAccess.h.

Constructor & Destructor Documentation

oldSubscription::oldSubscription ( epicsGuard< epicsMutex > &  guard,
oldChannelNotify chanIn,
cacChannel io,
unsigned  type,
arrayElementCount  nElem,
unsigned  mask,
caEventCallBackFunc pFuncIn,
void *  pPrivateIn,
evid pEventId 
)

Definition at line 28 of file oldSubscription.cpp.

33  :
34  chan ( chanIn ), id ( UINT_MAX ), pFunc ( pFuncIn ),
35  pPrivate ( pPrivateIn )
36 {
37  // The users event id *must* be set prior to potentially
38  // calling his callback from within subscribe.
39  if ( pEventId ) {
40  *pEventId = this;
41  }
42  io.subscribe ( guard, type, nElem, mask, *this, &this->id );
43  // Dont touch this pointer after this point because the
44  // 1st update callback might cancel the subscription and
45  // thereby destroy this object.
46 }
void exception epicsGuard< epicsMutex > int const char unsigned type
Definition: oldAccess.h:273
void * pPrivate
Definition: oldAccess.h:269
caEventCallBackFunc * pFunc
Definition: oldAccess.h:268
epicsPlacementDeleteOperator((void *, tsFreeList< struct oldSubscription, 1024, epicsMutexNOOP > &)) private cacChannel::ioi id)
Definition: oldAccess.h:263
virtual void subscribe(epicsGuard< epicsMutex > &, unsigned type, arrayElementCount count, unsigned mask, cacStateNotify &, ioid *=0)=0
oldSubscription::~oldSubscription ( )

Definition at line 48 of file oldSubscription.cpp.

49 {
50 }
oldSubscription::oldSubscription ( const oldSubscription )

Member Function Documentation

void oldSubscription::cancel ( CallbackGuard callbackGuard,
epicsGuard< epicsMutex > &  mutualExclusionGuard 
)
inline

Definition at line 502 of file oldAccess.h.

505 {
506  this->chan.ioCancel ( callbackGuard, mutualExclusionGuard, this->id );
507 }
oldChannelNotify & oldSubscription::channel ( ) const
inline

Definition at line 509 of file oldAccess.h.

510 {
511  return this->chan;
512 }
void oldSubscription::current ( epicsGuard< epicsMutex > &  guard,
unsigned  type,
arrayElementCount  count,
const void *  pData 
)
virtual

Implements cacStateNotify.

Definition at line 52 of file oldSubscription.cpp.

55 {
56  struct event_handler_args args;
57  args.usr = this->pPrivate;
58  args.chid = & this->chan;
59  args.type = static_cast < long > ( type );
60  args.count = static_cast < long > ( count );
61  args.status = ECA_NORMAL;
62  args.dbr = pData;
63  caEventCallBackFunc * pFuncTmp = this->pFunc;
64  {
65  epicsGuardRelease < epicsMutex > unguard ( guard );
66  ( *pFuncTmp ) ( args );
67  }
68 }
void caEventCallBackFunc(struct event_handler_args)
Definition: cadef.h:92
void exception epicsGuard< epicsMutex > int const char unsigned type
Definition: oldAccess.h:273
void * pPrivate
Definition: oldAccess.h:269
caEventCallBackFunc * pFunc
Definition: oldAccess.h:268
void exception epicsGuard< epicsMutex > int const char unsigned arrayElementCount count
Definition: oldAccess.h:273
#define ECA_NORMAL
Definition: caerr.h:77
void * usr
Definition: cadef.h:85
void oldSubscription::operator delete ( void *  )

Definition at line 95 of file oldSubscription.cpp.

96 {
97  // Visual C++ .net appears to require operator delete if
98  // placement operator delete is defined? I smell a ms rat
99  // because if I declare placement new and delete, but
100  // comment out the placement delete definition there are
101  // no undefined symbols.
102  errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
103  __FILE__, __LINE__ );
104 }
int errlogPrintf(const char *pFormat,...)
Definition: errlog.c:105
void * oldSubscription::operator new ( size_t  size,
tsFreeList< struct oldSubscription, 1024, epicsMutexNOOP > &  freeList 
)
inline

Definition at line 488 of file oldAccess.h.

490 {
491  return freeList.allocate ( size );
492 }
void * allocate(size_t size)
Definition: tsFreeList.h:126
oldSubscription& oldSubscription::operator= ( const oldSubscription )

Member Data Documentation

void exception epicsGuard< epicsMutex > int const char unsigned arrayElementCount oldSubscription::count

Definition at line 273 of file oldAccess.h.

epicsPlacementDeleteOperator (( void *, tsFreeList < struct oldSubscription, 1024, epicsMutexNOOP > & )) private cacChannel::ioi oldSubscription::id)

Definition at line 263 of file oldAccess.h.

void exception epicsGuard< epicsMutex > int const char* oldSubscription::pContext

Definition at line 273 of file oldAccess.h.

caEventCallBackFunc* oldSubscription::pFunc

Definition at line 268 of file oldAccess.h.

void* oldSubscription::pPrivate

Definition at line 269 of file oldAccess.h.

void exception epicsGuard< epicsMutex > int oldSubscription::status

Definition at line 273 of file oldAccess.h.

void exception epicsGuard< epicsMutex > int const char unsigned oldSubscription::type

Definition at line 273 of file oldAccess.h.


The documentation for this struct was generated from the following files: