25 #define epicsAssertAuthor "Jeff Hill johill@lanl.gov" 37 count ( countIn ), privateChanForIO ( chanIn ),
38 notify ( notifyIn ),
type ( typeIn ), mask ( maskIn ),
44 if ( this->mask == 0u ) {
67 ::printf (
"event subscription IO at %p, type %s, element count %lu, mask %u\n",
68 static_cast < const void * > (
this ),
70 this->count, this->mask );
79 void netSubscription::completion (
85 void netSubscription::exception (
87 int status,
const char * pContext )
90 this->subscribed =
false;
94 this->notify.exception (
95 guard, status, pContext, UINT_MAX, 0 );
101 if ( this->privateChanForIO.
connected ( guard ) ) {
102 this->notify.exception (
103 guard, status, pContext, UINT_MAX, 0 );
108 void netSubscription::exception (
110 cacRecycle & recycle,
int status,
const char * pContext,
114 this->subscribed =
false;
118 this->notify.exception (
119 guard, status, pContext, UINT_MAX, 0 );
125 if ( this->privateChanForIO.
connected ( guard ) ) {
126 this->notify.exception (
127 guard, status, pContext, typeIn, countIn );
132 void netSubscription::completion (
135 const void * pDataIn )
138 if ( this->privateChanForIO.
connected ( guard ) ) {
140 guard, typeIn, countIn, pDataIn );
147 if ( ! this->subscribed ) {
149 guard, chan, *
this );
150 this->subscribed =
true;
157 if ( this->subscribed ) {
159 guard, chan, *
this );
160 this->subscribed =
false;
164 void netSubscription::forceSubscriptionUpdate (
168 guard, chan, *
this );
171 void netSubscription::operator
delete (
void * )
178 errlogPrintf (
"%s:%d this compiler is confused about placement delete - memory was probably leaked",
179 __FILE__, __LINE__ );
virtual void ioCompletionNotify(epicsGuard< epicsMutex > &, class baseNMIU &)=0
virtual void subscriptionCancelRequest(epicsGuard< epicsMutex > &, nciu &chan, netSubscription &subscr)=0
virtual void current(epicsGuard< epicsMutex > &, unsigned type, arrayElementCount count, const void *pData)=0
virtual void recycleSubscription(epicsGuard< epicsMutex > &, netSubscription &io)=0
#define dbf_type_to_text(type)
void subscribeIfRequired(epicsGuard< epicsMutex > &guard, nciu &chan)
virtual void subscriptionRequest(epicsGuard< epicsMutex > &, nciu &, netSubscription &)=0
pvd::StructureConstPtr type
#define dbr_type_is_valid(type)
netSubscription(class privateInterfaceForIO &, unsigned type, arrayElementCount count, unsigned mask, cacStateNotify &)
netiiu * getPIIU(epicsGuard< epicsMutex > &)
virtual void subscriptionUpdateRequest(epicsGuard< epicsMutex > &, nciu &, netSubscription &)=0
int errlogPrintf(const char *pFormat,...)
virtual void destroy(epicsGuard< epicsMutex > &, class cacRecycle &)=0
unsigned long arrayElementCount
virtual bool connected(epicsGuard< epicsMutex > &) const =0
void unsubscribeIfRequired(epicsGuard< epicsMutex > &guard, nciu &chan)
void show(unsigned level) const