diff --git a/src/ca/repeaterClient.h b/src/ca/repeaterClient.h new file mode 100644 index 000000000..b786192f9 --- /dev/null +++ b/src/ca/repeaterClient.h @@ -0,0 +1,66 @@ + +/* + * $Id$ + * + * + * L O S A L A M O S + * Los Alamos National Laboratory + * Los Alamos, New Mexico 87545 + * + * Copyright, 1986, The Regents of the University of California. + * + * + * Author Jeffrey O. Hill + * johill@lanl.gov + * 505 665 1831 + */ + +#ifndef repeaterClienth +#define repeaterClienth + +#ifdef epicsExportSharedSymbols +#define repeaterClienth_restore_epicsExportSharedSymbols +#undef epicsExportSharedSymbols +#endif + +#include "shareLib.h" + +#include "tsDLList.h" +#include "epicsSingleton.h" + +#ifdef repeaterClienth_restore_epicsExportSharedSymbols +#define epicsExportSharedSymbols +#endif + +#include "shareLib.h" + +union osiSockAddr; + +/* + * one socket per client so we will get the ECONNREFUSED + * error code (and then delete the client) + */ +class repeaterClient : public tsDLNode < repeaterClient > { +public: + repeaterClient ( const osiSockAddr & from ); + bool connect (); + bool sendConfirm (); + bool sendMessage ( const void *pBuf, unsigned bufSize ); + void destroy (); + bool verify (); + bool identicalAddress ( const osiSockAddr &from ); + bool identicalPort ( const osiSockAddr &from ); + void * operator new ( size_t size ); + void operator delete ( void *pCadaver, size_t size ); +protected: + ~repeaterClient (); +private: + osiSockAddr from; + SOCKET sock; + unsigned short port () const; + static epicsSingleton < tsFreeList < class repeaterClient, 0x20 > > pFreeList; +}; + +#endif // repeaterClienth + + diff --git a/src/ca/templateInstances.cpp b/src/ca/templateInstances.cpp new file mode 100644 index 000000000..29758b325 --- /dev/null +++ b/src/ca/templateInstances.cpp @@ -0,0 +1,76 @@ + +/* + * $Id$ + * + * + * L O S A L A M O S + * Los Alamos National Laboratory + * Los Alamos, New Mexico 87545 + * + * Copyright, 1986, The Regents of the University of California. + * + * + * Author Jeffrey O. Hill + * johill@lanl.gov + * 505 665 1831 + */ + +#define epicsExportSharedSymbols +#include "virtualCircuit.h" +#include "bhe.h" +#include "cac.h" +#include "syncGroup.h" +#include "nciu.h" +#include "udpiiu.h" +#include "oldAccess.h" +#include "msgForMultiplyDefinedPV.h" +#include "repeaterClient.h" +#include "hostNameCache.h" + +#ifdef _MSC_VER +# pragma warning ( push ) +# pragma warning ( disable:4660 ) +#endif + +template class tsFreeList < bhe, 1024 >; +template class epicsSingleton < tsFreeList < bhe, 1024 > >; +template class resTable < nciu, chronIntId >; +template class chronIntIdResTable < nciu >; +template class resTable < baseNMIU, chronIntId >; +template class chronIntIdResTable < baseNMIU >; +template class resTable < CASG, chronIntId >; +template class chronIntIdResTable < CASG >; +template class resTable < bhe, inetAddrID >; +template class resTable < tcpiiu, caServerID >; +template class tsFreeList < netReadNotifyIO, 1024, epicsMutexNOOP >; +template class tsFreeList < netWriteNotifyIO, 1024, epicsMutexNOOP >; +template class tsFreeList < netSubscription, 1024, epicsMutexNOOP >; +template class epicsSingleton < cacServiceList >; +template class tsFreeList < CASG, 128 >; +template class epicsSingleton < tsFreeList < struct CASG, 128 > >; +template class tsFreeList < syncGroupReadNotify, 128, epicsMutexNOOP >; +template class tsFreeList < syncGroupWriteNotify, 128, epicsMutexNOOP >; +template class tsFreeList < comBuf, 0x20 >; +template class epicsSingleton < tsFreeList < comBuf, 0x20 > >; +template class tsFreeList < getCallback, 1024 >; +template class epicsSingleton < tsFreeList < getCallback, 1024 > >; +template class tsFreeList < getCopy, 1024 >; +template class epicsSingleton < tsFreeList < getCopy, 1024 > >; +template class tsFreeList < hostNameCache, 16 >; +template class epicsSingleton < tsFreeList < hostNameCache, 16 > >; +template class tsFreeList < msgForMultiplyDefinedPV, 16 >; +template class epicsSingleton < tsFreeList < msgForMultiplyDefinedPV, 16 > >; +template class tsFreeList < class nciu, 1024 >; +template class epicsSingleton < tsFreeList < class nciu, 1024 > >; +template class tsFreeList < oldChannelNotify, 1024 >; +template class epicsSingleton < tsFreeList < oldChannelNotify, 1024 > >; +template class tsFreeList < oldSubscription, 1024 >; +template class epicsSingleton < tsFreeList < oldSubscription, 1024 > >; +template class tsFreeList < class putCallback, 1024 >; +template class epicsSingleton < tsFreeList < class putCallback, 1024 > >; +template class tsFreeList < repeaterClient, 0x20 >; +template class epicsSingleton < tsFreeList < repeaterClient, 0x20 > >; + +#ifdef _MSC_VER +# pragma warning ( pop ) +#endif