remove more code for destroy
This commit is contained in:
@@ -368,8 +368,7 @@ CAChannel::CAChannel(std::string const & _channelName,
|
||||
channelRequester(_channelRequester),
|
||||
channelID(0),
|
||||
channelType(0),
|
||||
elementCount(0),
|
||||
destroyed(false)
|
||||
elementCount(0)
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
PVACCESS_REFCOUNT_MONITOR_CONSTRUCT(caChannel);
|
||||
@@ -439,12 +438,6 @@ CAChannel::~CAChannel()
|
||||
cout << "CAChannel::~CAChannel() " << channelName << endl;
|
||||
}
|
||||
PVACCESS_REFCOUNT_MONITOR_DESTRUCT(caChannel);
|
||||
{
|
||||
Lock lock(requestsMutex);
|
||||
if (destroyed)
|
||||
return;
|
||||
destroyed = true;
|
||||
}
|
||||
/* Clear CA Channel */
|
||||
threadAttach();
|
||||
ca_clear_channel(channelID);
|
||||
@@ -599,14 +592,6 @@ void CAChannel::printInfo(std::ostream& out)
|
||||
}
|
||||
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
|
||||
void CAChannel::destroy()
|
||||
{
|
||||
std::cerr << "Why is CAChannel::destroy() being called\n";
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------- */
|
||||
|
||||
void CAChannel::threadAttach()
|
||||
@@ -666,8 +651,7 @@ CAChannelGet::CAChannelGet(CAChannel::shared_pointer const & channel,
|
||||
:
|
||||
channel(channel),
|
||||
channelGetRequester(channelGetRequester),
|
||||
pvRequest(pvRequest),
|
||||
lastRequestFlag(false)
|
||||
pvRequest(pvRequest)
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
if(DEBUG_LEVEL>0) {
|
||||
@@ -1145,8 +1129,6 @@ void CAChannelGet::get()
|
||||
EXCEPTION_GUARD(getRequester->getDone(errorStatus, shared_from_this(), PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -1164,17 +1146,12 @@ void CAChannelGet::cancel()
|
||||
|
||||
void CAChannelGet::lastRequest()
|
||||
{
|
||||
// TODO sync !!!
|
||||
lastRequestFlag = true;
|
||||
std::cout << "CAChannelGet::lastRequest() "
|
||||
<< channel->getChannelName()
|
||||
<< " does not do anything"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
|
||||
void CAChannelGet::destroy()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
||||
CAChannelPutPtr CAChannelPut::create(
|
||||
@@ -1203,8 +1180,7 @@ CAChannelPut::CAChannelPut(CAChannel::shared_pointer const & channel,
|
||||
channel(channel),
|
||||
channelPutRequester(channelPutRequester),
|
||||
pvRequest(pvRequest),
|
||||
block(false),
|
||||
lastRequestFlag(false)
|
||||
block(false)
|
||||
{
|
||||
REFTRACE_INCREMENT(num_instances);
|
||||
if(DEBUG_LEVEL>0) {
|
||||
@@ -1521,9 +1497,6 @@ void CAChannelPut::put(PVStructure::shared_pointer const & pvPutStructure,
|
||||
std::cout << "no put func implemented" << std::endl;
|
||||
}
|
||||
|
||||
// TODO here???!!!
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -1551,9 +1524,6 @@ void CAChannelPut::getDone(struct event_handler_args &args)
|
||||
PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
|
||||
// TODO here???!!!
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -1593,17 +1563,12 @@ void CAChannelPut::cancel()
|
||||
|
||||
void CAChannelPut::lastRequest()
|
||||
{
|
||||
// TODO sync !!!
|
||||
lastRequestFlag = true;
|
||||
std::cout << "CAChannelPut::lastRequest() "
|
||||
<< channel->getChannelName()
|
||||
<< " does not do anything"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
|
||||
void CAChannelPut::destroy()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
/* --------------- Monitor --------------- */
|
||||
|
||||
@@ -1900,15 +1865,5 @@ void CAChannelMonitor::cancel()
|
||||
// noop
|
||||
}
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
|
||||
void CAChannelMonitor::destroy()
|
||||
{
|
||||
if(!isStarted) return;
|
||||
channel->threadAttach();
|
||||
ca_clear_subscription(eventID);
|
||||
isStarted = false;
|
||||
}
|
||||
|
||||
}}}
|
||||
|
||||
@@ -90,7 +90,7 @@ public:
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
virtual void destroy();
|
||||
virtual void destroy() EPICS_DEPRECATED {};
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
@@ -120,7 +120,6 @@ private:
|
||||
|
||||
epics::pvData::Mutex requestsMutex;
|
||||
|
||||
bool destroyed;
|
||||
std::queue<CAChannelPutPtr> putQueue;
|
||||
std::queue<CAChannelGetPtr> getQueue;
|
||||
std::queue<CAChannelMonitorPtr> monitorQueue;
|
||||
@@ -169,7 +168,7 @@ public:
|
||||
/* --------------- ChannelBaseRequester --------------- */
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
/* --------------- Destroyable --------------- */
|
||||
virtual void destroy();
|
||||
virtual void destroy() EPICS_DEPRECATED {};
|
||||
|
||||
void activate();
|
||||
|
||||
@@ -182,7 +181,6 @@ private:
|
||||
CAChannelPtr channel;
|
||||
ChannelGetRequester::weak_pointer channelGetRequester;
|
||||
epics::pvData::PVStructure::shared_pointer pvRequest;
|
||||
bool lastRequestFlag;
|
||||
|
||||
chtype getType;
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
@@ -238,7 +236,7 @@ public:
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
virtual void destroy();
|
||||
virtual void destroy() EPICS_DEPRECATED {};
|
||||
|
||||
void activate();
|
||||
|
||||
@@ -252,7 +250,6 @@ private:
|
||||
ChannelPutRequester::weak_pointer channelPutRequester;
|
||||
epics::pvData::PVStructure::shared_pointer pvRequest;
|
||||
bool block;
|
||||
bool lastRequestFlag;
|
||||
|
||||
chtype getType;
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
@@ -302,7 +299,7 @@ public:
|
||||
/* --------------- ChannelBaseRequester --------------- */
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
/* --------------- Destroyable --------------- */
|
||||
virtual void destroy();
|
||||
virtual void destroy() EPICS_DEPRECATED {};
|
||||
void activate();
|
||||
private:
|
||||
|
||||
|
||||
@@ -127,10 +127,6 @@ void CAChannelProvider::poll()
|
||||
{
|
||||
}
|
||||
|
||||
void CAChannelProvider::destroy()
|
||||
{
|
||||
std::cerr << "CAChannelProvider::destroy() should not be called\n";
|
||||
}
|
||||
|
||||
void CAChannelProvider::threadAttach()
|
||||
{
|
||||
@@ -139,6 +135,7 @@ void CAChannelProvider::threadAttach()
|
||||
|
||||
void CAChannelProvider::initialize()
|
||||
{
|
||||
if(DEBUG_LEVEL>0) std::cout << "CAChannelProvider::initialize()\n";
|
||||
/* Create Channel Access */
|
||||
int result = ca_context_create(ca_enable_preemptive_callback);
|
||||
if (result != ECA_NORMAL) {
|
||||
@@ -166,6 +163,11 @@ void ca_factory_cleanup(void*)
|
||||
|
||||
void CAClientFactory::start()
|
||||
{
|
||||
if(DEBUG_LEVEL>0) std::cout << "CAClientFactory::start()\n";
|
||||
if(ChannelProviderRegistry::clients()->getProvider("ca")) {
|
||||
// do not start twice
|
||||
return;
|
||||
}
|
||||
epicsSignalInstallSigAlarmIgnore();
|
||||
epicsSignalInstallSigPipeIgnore();
|
||||
registerRefCounter("CAChannelProvider", &CAChannelProvider::num_instances);
|
||||
@@ -175,7 +177,9 @@ void CAClientFactory::start()
|
||||
registerRefCounter("CAChannelMonitor", &CAChannelMonitor::num_instances);
|
||||
|
||||
if(ChannelProviderRegistry::clients()->add<CAChannelProvider>("ca", false))
|
||||
{
|
||||
epicsAtExit(&ca_factory_cleanup, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void CAClientFactory::stop()
|
||||
|
||||
@@ -11,12 +11,10 @@
|
||||
|
||||
#include <pv/caProvider.h>
|
||||
#include <pv/pvAccess.h>
|
||||
#include <map>
|
||||
|
||||
|
||||
namespace epics {
|
||||
namespace pvAccess {
|
||||
class Configuration;
|
||||
namespace ca {
|
||||
|
||||
#define DEBUG_LEVEL 0
|
||||
@@ -64,20 +62,15 @@ public:
|
||||
virtual void flush();
|
||||
virtual void poll();
|
||||
|
||||
virtual void destroy();
|
||||
|
||||
virtual void destroy() EPICS_DEPRECATED {};
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
void threadAttach();
|
||||
|
||||
private:
|
||||
|
||||
void initialize();
|
||||
|
||||
ca_client_context* current_context;
|
||||
|
||||
epics::pvData::Mutex channelsMutex;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
|
||||
namespace epics {
|
||||
namespace pvAccess {
|
||||
class Configuration;
|
||||
namespace ca {
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user