From 54bb30fd86e3acd94022c15f5c866b82cbacc6b9 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 4 Apr 2018 16:52:21 -0700 Subject: [PATCH] reftrack BlockingUDPTransport --- src/factory/ChannelAccessFactory.cpp | 2 ++ src/remote/blockingUDPTransport.cpp | 6 ++++++ src/remote/pv/blockingUDP.h | 2 ++ 3 files changed, 10 insertions(+) diff --git a/src/factory/ChannelAccessFactory.cpp b/src/factory/ChannelAccessFactory.cpp index 90af176..9f5a705 100644 --- a/src/factory/ChannelAccessFactory.cpp +++ b/src/factory/ChannelAccessFactory.cpp @@ -24,6 +24,7 @@ #include "pv/codec.h" #include #include +#include using namespace epics::pvData; using std::string; @@ -173,6 +174,7 @@ void providerRegInit(void*) registerRefCounter("ServerChannel", &ServerChannel::num_instances); registerRefCounter("Transport (ABC)", &Transport::num_instances); registerRefCounter("BlockingTCPTransportCodec", &detail::BlockingTCPTransportCodec::num_instances); + registerRefCounter("BlockingUDPTransport", &BlockingUDPTransport::num_instances); registerRefCounter("ChannelProvider (ABC)", &ChannelProvider::num_instances); registerRefCounter("Channel (ABC)", &Channel::num_instances); registerRefCounter("ChannelRequester (ABC)", &ChannelRequester::num_instances); diff --git a/src/remote/blockingUDPTransport.cpp b/src/remote/blockingUDPTransport.cpp index 844ed9e..67ffe8d 100644 --- a/src/remote/blockingUDPTransport.cpp +++ b/src/remote/blockingUDPTransport.cpp @@ -17,6 +17,7 @@ #include #include +#include #define epicsExportSharedSymbols #include @@ -42,6 +43,8 @@ inline int sendto(int s, const char *buf, size_t len, int flags, const struct so // reserve some space for CMD_ORIGIN_TAG message #define RECEIVE_BUFFER_PRE_RESERVE (PVA_MESSAGE_HEADER_SIZE + 16) +size_t BlockingUDPTransport::num_instances; + BlockingUDPTransport::BlockingUDPTransport(bool serverFlag, ResponseHandler::shared_pointer const & responseHandler, SOCKET channel, osiSockAddr& bindAddress, @@ -79,9 +82,12 @@ BlockingUDPTransport::BlockingUDPTransport(bool serverFlag, sockAddrToDottedIP(&_remoteAddress.sa, strBuffer, sizeof(strBuffer)); _remoteName = strBuffer; } + + REFTRACE_INCREMENT(num_instances); } BlockingUDPTransport::~BlockingUDPTransport() { + REFTRACE_DECREMENT(num_instances); close(true); // close the socket and stop the thread. } diff --git a/src/remote/pv/blockingUDP.h b/src/remote/pv/blockingUDP.h index 143e1c7..6cec9ac 100644 --- a/src/remote/pv/blockingUDP.h +++ b/src/remote/pv/blockingUDP.h @@ -49,6 +49,8 @@ class BlockingUDPTransport : public epics::pvData::NoDefaultMethods, public: POINTER_DEFINITIONS(BlockingUDPTransport); + static size_t num_instances; + private: std::tr1::weak_ptr internal_this; friend class BlockingUDPConnector;