From e0956c2c1189dd9b97d7721c6b4ef8242b4b2170 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Fri, 22 Mar 2002 21:25:41 +0000 Subject: [PATCH] made CA client service list an epics singleton --- src/ca/cac.cpp | 2 +- src/ca/cacIO.h | 3 ++- src/ca/cacServiceList.cpp | 8 ++++---- src/db/dbServiceIO.cpp | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ca/cac.cpp b/src/ca/cac.cpp index 8f40e1865..ee4819cb2 100644 --- a/src/ca/cac.cpp +++ b/src/ca/cac.cpp @@ -664,7 +664,7 @@ cacChannel & cac::createChannel ( const char * pName, pIO = this->services.createChannel ( pName, chan, pri ); if ( ! pIO ) { - pIO = cacGlobalServiceList.createChannel ( pName, chan, pri ); + pIO = pGlobalServiceListCAC->createChannel ( pName, chan, pri ); if ( ! pIO ) { if ( ! this->pudpiiu || ! this->pSearchTmr ) { if ( ! this->setupUDP () ) { diff --git a/src/ca/cacIO.h b/src/ca/cacIO.h index 3f7e3ef45..c9999177b 100644 --- a/src/ca/cacIO.h +++ b/src/ca/cacIO.h @@ -238,7 +238,8 @@ private: cacServiceList & operator = ( const cacServiceList & ); }; -epicsShareExtern cacServiceList cacGlobalServiceList; +template < class T > class epicsSingleton; +epicsShareExtern epicsSingleton < cacServiceList > pGlobalServiceListCAC; epicsShareFunc int epicsShareAPI ca_register_service ( cacService *pService ); diff --git a/src/ca/cacServiceList.cpp b/src/ca/cacServiceList.cpp index 5358b71b3..1c44e238a 100644 --- a/src/ca/cacServiceList.cpp +++ b/src/ca/cacServiceList.cpp @@ -14,14 +14,14 @@ * 505 665 1831 */ -#include "iocinf.h" -#include "epicsGuard.h" +#include "epicsSingleton.h" #define epicsExportSharedSymbols +#include "iocinf.h" +#include "epicsGuard.h" #include "cacIO.h" -#undef epicsExportSharedSymbols -epicsShareDef cacServiceList cacGlobalServiceList; +epicsShareDef epicsSingleton < cacServiceList > pGlobalServiceListCAC; cacServiceList::cacServiceList () { diff --git a/src/db/dbServiceIO.cpp b/src/db/dbServiceIO.cpp index 18e1d9904..4c192ae6c 100644 --- a/src/db/dbServiceIO.cpp +++ b/src/db/dbServiceIO.cpp @@ -52,7 +52,7 @@ dbBaseIO::dbBaseIO () {} dbServiceIOLoadTimeInit::dbServiceIOLoadTimeInit () { - cacGlobalServiceList.registerService ( this->dbio ); + pGlobalServiceListCAC->registerService ( this->dbio ); } dbServiceIO::dbServiceIO () :