From d1aac97514087dfbbe76e9a73b1572d4a2cc14f5 Mon Sep 17 00:00:00 2001 From: Gasper Jansa Date: Fri, 25 Feb 2011 17:12:17 +0100 Subject: [PATCH] references on transportSender --- .../server/referencedTransportSender.cpp | 29 +++++++++++++++++++ .../server/referencedTransportSender.h | 27 +++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 pvAccessApp/server/referencedTransportSender.cpp create mode 100644 pvAccessApp/server/referencedTransportSender.h diff --git a/pvAccessApp/server/referencedTransportSender.cpp b/pvAccessApp/server/referencedTransportSender.cpp new file mode 100644 index 0000000..c9781a7 --- /dev/null +++ b/pvAccessApp/server/referencedTransportSender.cpp @@ -0,0 +1,29 @@ +/* + * referencedTransportSender.cpp + */ + +#include "referencedTransportSender.h" + +using namespace epics::pvData; + +namespace epics { namespace pvAccess { + +void ReferencedTransportSender::release() +{ + _refMutex.lock(); + _refCount--; + _refMutex.unlock(); + if (_refCount == 0) + { + delete this; + } +} + +void ReferencedTransportSender::acquire() +{ + Lock guard(_refMutex); + _refCount++; +} + +} +} diff --git a/pvAccessApp/server/referencedTransportSender.h b/pvAccessApp/server/referencedTransportSender.h new file mode 100644 index 0000000..fdd27f5 --- /dev/null +++ b/pvAccessApp/server/referencedTransportSender.h @@ -0,0 +1,27 @@ +/* + * referencedTransportSender.h + */ + +#ifndef REFERENCEDTRANSPORTSENDER_H_ +#define REFERENCEDTRANSPORTSENDER_H_ + +#include "remote.h" + +namespace epics { +namespace pvAccess { + +class ReferencedTransportSender : public TransportSender +{ +public: + void release(); + void acquire(); +private: + epics::pvData::Mutex _refMutex; + int32 _refCount; +}; + +} +} + + +#endif /* REFERENCEDTRANSPORTSENDER_H_ */