106 lines
3.2 KiB
C++
106 lines
3.2 KiB
C++
|
|
/*
|
|
* $Id$
|
|
*
|
|
*
|
|
* L O S A L A M O S
|
|
* Los Alamos National Laboratory
|
|
* Los Alamos, New Mexico 87545
|
|
*
|
|
* Copyright, The Regents of the University of California.
|
|
*
|
|
*
|
|
* Author Jeffrey O. Hill
|
|
* johill@lanl.gov
|
|
* 505 665 1831
|
|
*/
|
|
|
|
extern "C" void cacNoConnHandler ( struct connection_handler_args args );
|
|
|
|
struct oldChannel : public cacChannel {
|
|
public:
|
|
oldChannel (caCh *pConnCallBack, void *pPrivate);
|
|
void destroy ();
|
|
void setPrivatePointer (void *);
|
|
void * privatePointer () const;
|
|
int changeConnCallBack (caCh *pfunc);
|
|
int replaceAccessRightsEvent (caArh *pfunc);
|
|
void ioAttachNotify ();
|
|
void ioReleaseNotify ();
|
|
|
|
static void * operator new (size_t size);
|
|
static void operator delete (void *pCadaver, size_t size);
|
|
|
|
private:
|
|
caCh *pConnCallBack;
|
|
void *pPrivate;
|
|
caArh *pAccessRightsFunc;
|
|
|
|
~oldChannel (); // must allocate from pool
|
|
void connectTimeoutNotify ();
|
|
void connectNotify ();
|
|
void disconnectNotify ();
|
|
void accessRightsNotify ( caar );
|
|
static tsFreeList < struct oldChannel, 1024 > freeList;
|
|
|
|
friend int epicsShareAPI ca_array_get (chtype type, unsigned long count, chid pChan, void *pValue);
|
|
friend void cacNoConnHandler ( struct connection_handler_args args );
|
|
};
|
|
|
|
class getCallback : public cacNotify {
|
|
public:
|
|
getCallback (oldChannel &chan, caEventCallBackFunc *pFunc, void *pPrivate);
|
|
void destroy ();
|
|
|
|
static void * operator new ( size_t size );
|
|
static void operator delete ( void *pCadaver, size_t size );
|
|
|
|
private:
|
|
oldChannel &chan;
|
|
caEventCallBackFunc *pFunc;
|
|
void *pPrivate;
|
|
~getCallback (); // allocate only out of pool
|
|
virtual void completionNotify (unsigned type, unsigned long count, const void *pData);
|
|
virtual void exceptionNotify (int status, const char *pContext);
|
|
static tsFreeList < class getCallback, 1024 > freeList;
|
|
};
|
|
|
|
class putCallback : public cacNotify {
|
|
public:
|
|
putCallback (oldChannel &chan, caEventCallBackFunc *pFunc, void *pPrivate );
|
|
void destroy ();
|
|
|
|
static void * operator new ( size_t size );
|
|
static void operator delete ( void *pCadaver, size_t size );
|
|
|
|
private:
|
|
oldChannel &chan;
|
|
caEventCallBackFunc *pFunc;
|
|
void *pPrivate;
|
|
~putCallback (); // allocate only out of pool
|
|
virtual void completionNotify ();
|
|
virtual void exceptionNotify ( int status, const char *pContext );
|
|
static tsFreeList < class putCallback, 1024 > freeList;
|
|
};
|
|
|
|
struct oldSubscription : public cacNotify {
|
|
public:
|
|
oldSubscription ( oldChannel &chan, caEventCallBackFunc *pFunc, void *pPrivate );
|
|
void destroy ();
|
|
|
|
static void * operator new ( size_t size );
|
|
static void operator delete ( void *pCadaver, size_t size );
|
|
|
|
private:
|
|
oldChannel &chan;
|
|
caEventCallBackFunc *pFunc;
|
|
void *pPrivate;
|
|
|
|
void completionNotify ( unsigned type, unsigned long count, const void *pData );
|
|
void exceptionNotify ( int status, const char *pContext );
|
|
|
|
~oldSubscription (); // must allocate from pool
|
|
static tsFreeList < struct oldSubscription, 1024 > freeList;
|
|
};
|
|
|