reftrack more classes
include the common abstract bases used by all ChannelProviders.
This commit is contained in:
@@ -152,7 +152,10 @@ struct epicsShareClass ChannelBaseRequester : virtual public epics::pvData::Requ
|
||||
{
|
||||
POINTER_DEFINITIONS(ChannelBaseRequester);
|
||||
|
||||
virtual ~ChannelBaseRequester() {}
|
||||
static size_t num_instances;
|
||||
|
||||
ChannelBaseRequester();
|
||||
virtual ~ChannelBaseRequester();
|
||||
|
||||
/** Notification when underlying Channel becomes DISCONNECTED or DESTORYED
|
||||
*
|
||||
@@ -167,6 +170,10 @@ struct epicsShareClass ChannelBaseRequester : virtual public epics::pvData::Requ
|
||||
* @param destroy true for final disconnect.
|
||||
*/
|
||||
virtual void channelDisconnect(bool destroy) {}
|
||||
|
||||
private:
|
||||
ChannelBaseRequester(const ChannelBaseRequester&);
|
||||
ChannelBaseRequester& operator=(const ChannelBaseRequester&);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -176,7 +183,10 @@ class epicsShareClass ChannelRequest : public virtual Destroyable, public Lockab
|
||||
public:
|
||||
POINTER_DEFINITIONS(ChannelRequest);
|
||||
|
||||
virtual ~ChannelRequest() {}
|
||||
static size_t num_instances;
|
||||
|
||||
ChannelRequest();
|
||||
virtual ~ChannelRequest();
|
||||
|
||||
/**
|
||||
* Get a channel instance this request belongs to.
|
||||
@@ -199,6 +209,10 @@ public:
|
||||
* When last request will be completed (regardless of completion status) the remote and local instance will be destroyed.
|
||||
*/
|
||||
virtual void lastRequest() = 0;
|
||||
|
||||
private:
|
||||
ChannelRequest(const ChannelRequest&);
|
||||
ChannelRequest& operator=(const ChannelRequest&);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1051,7 +1065,10 @@ public:
|
||||
*
|
||||
* See ChannelProvider::createChannel()
|
||||
*/
|
||||
class epicsShareClass ChannelRequester : public virtual Requester {
|
||||
class epicsShareClass ChannelRequester : public virtual Requester
|
||||
{
|
||||
ChannelRequester(const ChannelRequester&);
|
||||
ChannelRequester& operator=(const ChannelRequester&);
|
||||
public:
|
||||
POINTER_DEFINITIONS(ChannelRequester);
|
||||
typedef Channel operation_type;
|
||||
@@ -1117,7 +1134,10 @@ enum FlushStrategy {
|
||||
*
|
||||
* Uniquely configurable (via ChannelProviderFactory::newInstance(Configuration*)
|
||||
*/
|
||||
class epicsShareClass ChannelProvider : public Destroyable, private epics::pvData::NoDefaultMethods {
|
||||
class epicsShareClass ChannelProvider : public Destroyable, private epics::pvData::NoDefaultMethods
|
||||
{
|
||||
ChannelProvider(const ChannelProvider&);
|
||||
ChannelProvider& operator=(const ChannelProvider&);
|
||||
public:
|
||||
POINTER_DEFINITIONS(ChannelProvider);
|
||||
|
||||
@@ -1134,7 +1154,10 @@ public:
|
||||
/** OPI priority. */
|
||||
static const short PRIORITY_OPI = PRIORITY_MIN;
|
||||
|
||||
virtual ~ChannelProvider() {}
|
||||
static size_t num_instances;
|
||||
|
||||
ChannelProvider();
|
||||
virtual ~ChannelProvider();
|
||||
|
||||
/**
|
||||
* Get the provider name.
|
||||
|
||||
@@ -120,6 +120,41 @@ ChannelArray::shared_pointer Channel::createChannelArray(
|
||||
return ret;
|
||||
}
|
||||
|
||||
size_t ChannelProvider::num_instances;
|
||||
|
||||
ChannelProvider::ChannelProvider()
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
}
|
||||
|
||||
ChannelProvider::~ChannelProvider()
|
||||
{
|
||||
REFTRACE_DECREMENT(num_instances);
|
||||
}
|
||||
|
||||
size_t ChannelBaseRequester::num_instances;
|
||||
|
||||
ChannelBaseRequester::ChannelBaseRequester()
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
}
|
||||
|
||||
ChannelBaseRequester::~ChannelBaseRequester()
|
||||
{
|
||||
REFTRACE_DECREMENT(num_instances);
|
||||
}
|
||||
|
||||
size_t ChannelRequest::num_instances;
|
||||
|
||||
ChannelRequest::ChannelRequest()
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
}
|
||||
|
||||
ChannelRequest::~ChannelRequest()
|
||||
{
|
||||
REFTRACE_DECREMENT(num_instances);
|
||||
}
|
||||
|
||||
size_t ChannelRequester::num_instances;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <pv/factory.h>
|
||||
#include "pv/codec.h"
|
||||
#include <pv/serverContextImpl.h>
|
||||
#include <pv/serverChannelImpl.h>
|
||||
|
||||
using namespace epics::pvData;
|
||||
using std::string;
|
||||
@@ -160,9 +161,14 @@ epicsThreadOnceId providerRegOnce = EPICS_THREAD_ONCE_INIT;
|
||||
void providerRegInit(void*)
|
||||
{
|
||||
providerRegGbl = new providerRegGbl_t;
|
||||
registerRefCounter("ServerContext (PVA)", &ServerContextImpl::num_instances);
|
||||
registerRefCounter("ServerContextImpl", &ServerContextImpl::num_instances);
|
||||
registerRefCounter("ServerChannelImpl", &ServerChannelImpl::num_instances);
|
||||
registerRefCounter("BlockingTCPTransportCodec", &detail::BlockingTCPTransportCodec::num_instances);
|
||||
registerRefCounter("ChannelRequester", &ChannelRequester::num_instances);
|
||||
registerRefCounter("ChannelProvider (ABC)", &ChannelProvider::num_instances);
|
||||
registerRefCounter("ChannelRequester (ABC)", &ChannelRequester::num_instances);
|
||||
registerRefCounter("ChannelBaseRequester (ABC)", &ChannelBaseRequester::num_instances);
|
||||
registerRefCounter("ChannelRequest (ABC)", &ChannelRequest::num_instances);
|
||||
registerRefCounter("ResponseHandler (ABC)", &ResponseHandler::num_instances);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <osiSock.h>
|
||||
|
||||
#include <pv/byteBuffer.h>
|
||||
#include <pv/reftrack.h>
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include <pv/remote.h>
|
||||
@@ -22,6 +23,18 @@ using namespace epics::pvData;
|
||||
namespace epics {
|
||||
namespace pvAccess {
|
||||
|
||||
size_t ResponseHandler::num_instances;
|
||||
|
||||
ResponseHandler::ResponseHandler()
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
}
|
||||
|
||||
ResponseHandler::~ResponseHandler()
|
||||
{
|
||||
REFTRACE_DECREMENT(num_instances);
|
||||
}
|
||||
|
||||
void AbstractResponseHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
Transport::shared_pointer const & transport, int8 version, int8 command,
|
||||
size_t payloadSize, ByteBuffer* payloadBuffer) {
|
||||
|
||||
@@ -356,7 +356,10 @@ class ResponseHandler {
|
||||
public:
|
||||
POINTER_DEFINITIONS(ResponseHandler);
|
||||
|
||||
virtual ~ResponseHandler() {}
|
||||
static size_t num_instances;
|
||||
|
||||
ResponseHandler();
|
||||
virtual ~ResponseHandler();
|
||||
|
||||
/**
|
||||
* Handle response.
|
||||
|
||||
@@ -20,6 +20,8 @@ class ServerChannelImpl : public ServerChannel
|
||||
public:
|
||||
POINTER_DEFINITIONS(ServerChannelImpl);
|
||||
|
||||
static size_t num_instances;
|
||||
|
||||
/**
|
||||
* Create server channel for given process variable.
|
||||
* @param channel local channel.
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
|
||||
#include <pv/reftrack.h>
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include <pv/serverChannelImpl.h>
|
||||
|
||||
@@ -12,6 +14,8 @@ using namespace epics::pvData;
|
||||
namespace epics {
|
||||
namespace pvAccess {
|
||||
|
||||
size_t ServerChannelImpl::num_instances;
|
||||
|
||||
ServerChannelImpl::ServerChannelImpl(Channel::shared_pointer const & channel,
|
||||
const ChannelRequester::shared_pointer &requester,
|
||||
pvAccessID cid, pvAccessID sid,
|
||||
@@ -23,6 +27,7 @@ ServerChannelImpl::ServerChannelImpl(Channel::shared_pointer const & channel,
|
||||
_destroyed(false),
|
||||
_channelSecuritySession(css)
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
if (!channel.get())
|
||||
{
|
||||
THROW_BASE_EXCEPTION("non-null channel required");
|
||||
@@ -109,6 +114,7 @@ void ServerChannelImpl::destroy()
|
||||
ServerChannelImpl::~ServerChannelImpl()
|
||||
{
|
||||
destroy();
|
||||
REFTRACE_DECREMENT(num_instances);
|
||||
}
|
||||
|
||||
void ServerChannelImpl::printInfo()
|
||||
|
||||
Reference in New Issue
Block a user