caProvider add reftrack counters

This commit is contained in:
Michael Davidsaver
2017-08-30 17:51:52 -05:00
parent 7902cc0033
commit 146b445832
4 changed files with 36 additions and 2 deletions
+15 -2
View File
@@ -10,6 +10,7 @@
#include <pv/standardField.h>
#include <pv/logger.h>
#include <pv/pvAccess.h>
#include <pv/reftrack.h>
#include "caChannel.h"
#include <pv/caStatus.h>
@@ -344,6 +345,8 @@ void CAChannel::disconnected()
EXCEPTION_GUARD(channelRequester->channelStateChange(shared_from_this(), Channel::DISCONNECTED));
}
size_t CAChannel::num_instances;
CAChannel::CAChannel(std::string const & _channelName,
CAChannelProvider::shared_pointer const & _channelProvider,
ChannelRequester::shared_pointer const & _channelRequester) :
@@ -355,6 +358,7 @@ CAChannel::CAChannel(std::string const & _channelName,
elementCount(0),
destroyed(false)
{
REFTRACE_INCREMENT(num_instances);
PVACCESS_REFCOUNT_MONITOR_CONSTRUCT(caChannel);
}
@@ -431,6 +435,7 @@ CAChannel::~CAChannel()
/* Clear CA Channel */
threadAttach();
ca_clear_channel(channelID);
REFTRACE_DECREMENT(num_instances);
}
@@ -647,6 +652,7 @@ static chtype getDBRType(PVStructure::shared_pointer const & pvRequest, chtype n
return nativeType;
}
size_t CAChannelGet::num_instances;
CAChannelGet::CAChannelGet(CAChannel::shared_pointer const & channel,
ChannelGetRequester::shared_pointer const & channelGetRequester,
@@ -657,11 +663,12 @@ CAChannelGet::CAChannelGet(CAChannel::shared_pointer const & channel,
pvRequest(pvRequest),
lastRequestFlag(false)
{
REFTRACE_INCREMENT(num_instances);
}
CAChannelGet::~CAChannelGet()
{
REFTRACE_DECREMENT(num_instances);
}
void CAChannelGet::activate()
@@ -1156,8 +1163,10 @@ CAChannelPutPtr CAChannelPut::create(
CAChannelPut::~CAChannelPut()
{
REFTRACE_DECREMENT(num_instances);
}
size_t CAChannelPut::num_instances;
CAChannelPut::CAChannelPut(CAChannel::shared_pointer const & channel,
ChannelPutRequester::shared_pointer const & channelPutRequester,
@@ -1169,7 +1178,7 @@ CAChannelPut::CAChannelPut(CAChannel::shared_pointer const & channel,
block(false),
lastRequestFlag(false)
{
REFTRACE_INCREMENT(num_instances);
}
void CAChannelPut::activate()
@@ -1649,8 +1658,11 @@ CAChannelMonitor::~CAChannelMonitor()
if(!isStarted) return;
channel->threadAttach();
ca_clear_subscription(eventID);
REFTRACE_DECREMENT(num_instances);
}
size_t CAChannelMonitor::num_instances;
CAChannelMonitor::CAChannelMonitor(
CAChannel::shared_pointer const & channel,
MonitorRequester::shared_pointer const & monitorRequester,
@@ -1661,6 +1673,7 @@ CAChannelMonitor::CAChannelMonitor(
pvRequest(pvRequest),
isStarted(false)
{
REFTRACE_INCREMENT(num_instances);
}
void CAChannelMonitor::activate()
+8
View File
@@ -46,6 +46,8 @@ class CAChannel :
public:
POINTER_DEFINITIONS(CAChannel);
static size_t num_instances;
static shared_pointer create(CAChannelProvider::shared_pointer const & channelProvider,
std::string const & channelName,
short priority,
@@ -139,6 +141,8 @@ class CAChannelGet :
public:
POINTER_DEFINITIONS(CAChannelGet);
static size_t num_instances;
static CAChannelGet::shared_pointer create(CAChannel::shared_pointer const & channel,
ChannelGetRequester::shared_pointer const & channelGetRequester,
epics::pvData::PVStructure::shared_pointer const & pvRequest);
@@ -198,6 +202,8 @@ class CAChannelPut :
public:
POINTER_DEFINITIONS(CAChannelPut);
static size_t num_instances;
static CAChannelPut::shared_pointer create(CAChannel::shared_pointer const & channel,
ChannelPutRequester::shared_pointer const & channelPutRequester,
epics::pvData::PVStructure::shared_pointer const & pvRequest);
@@ -267,6 +273,8 @@ class CAChannelMonitor :
public:
POINTER_DEFINITIONS(CAChannelMonitor);
static size_t num_instances;
static CAChannelMonitor::shared_pointer create(CAChannel::shared_pointer const & channel,
MonitorRequester::shared_pointer const & monitorRequester,
epics::pvData::PVStructure::shared_pointer const & pvRequest);
+11
View File
@@ -13,6 +13,7 @@
#include <pv/logger.h>
#include <pv/configuration.h>
#include <pv/pvAccess.h>
#include <pv/reftrack.h>
#define epicsExportSharedSymbols
#include <pv/caProvider.h>
@@ -30,8 +31,11 @@ using namespace epics::pvData;
catch (std::exception &e) { LOG(logLevelError, "Unhandled exception caught from client code at %s:%d: %s", __FILE__, __LINE__, e.what()); } \
catch (...) { LOG(logLevelError, "Unhandled exception caught from client code at %s:%d.", __FILE__, __LINE__); }
size_t CAChannelProvider::num_instances;
CAChannelProvider::CAChannelProvider() : current_context(0), destroyed(false)
{
REFTRACE_INCREMENT(num_instances);
initialize();
}
@@ -39,6 +43,7 @@ CAChannelProvider::CAChannelProvider(const std::tr1::shared_ptr<Configuration>&)
: current_context(0)
, destroyed(false)
{
REFTRACE_INCREMENT(num_instances);
// Ignoring Configuration as CA only allows config via. environment,
// and we don't want to change this here.
initialize();
@@ -48,6 +53,7 @@ CAChannelProvider::~CAChannelProvider()
{
// call destroy() to destroy CA context
destroy();
REFTRACE_DECREMENT(num_instances);
}
std::string CAChannelProvider::getProviderName()
@@ -194,6 +200,11 @@ void CAClientFactory::start()
{
epicsSignalInstallSigAlarmIgnore();
epicsSignalInstallSigPipeIgnore();
registerRefCounter("CAChannelProvider", &CAChannelProvider::num_instances);
registerRefCounter("CAChannel", &CAChannel::num_instances);
registerRefCounter("CAChannelGet", &CAChannelGet::num_instances);
registerRefCounter("CAChannelPut", &CAChannelPut::num_instances);
registerRefCounter("CAChannelMonitor", &CAChannelMonitor::num_instances);
if(ChannelProviderRegistry::clients()->add<CAChannelProvider>("ca", false))
epicsAtExit(&ca_factory_cleanup, NULL);
+2
View File
@@ -26,6 +26,8 @@ class CAChannelProvider :
public:
POINTER_DEFINITIONS(CAChannelProvider);
static size_t num_instances;
CAChannelProvider();
CAChannelProvider(const std::tr1::shared_ptr<Configuration>&);
virtual ~CAChannelProvider();