spamme example more debug

This commit is contained in:
Michael Davidsaver
2017-06-28 20:38:35 +02:00
parent a6efd7ce6a
commit 5e97d0e022

View File

@ -10,6 +10,7 @@
#endif
#include <epicsEvent.h>
#include <epicsThread.h>
#include <epicsMutex.h>
#include <epicsGuard.h>
@ -45,7 +46,7 @@ struct SpamMonitor : public pva::Monitor,
public std::tr1::enable_shared_from_this<SpamMonitor>
{
const std::tr1::shared_ptr<SpamChannel> channel;
const pva::MonitorRequester::shared_pointer requester;
const requester_type::weak_pointer requester;
pvd::int32 maxQueue;
bool pipeline;
// Has the client seen poll()==NULL
@ -170,9 +171,14 @@ struct SpamMonitor : public pva::Monitor,
}
signal &= !filled.empty();
if(signal)
clientEmpty = false;
}
if(signal) {
requester_type::shared_pointer req(requester.lock());
if(req)
req->monitorEvent(shared_from_this());
}
if(signal)
requester->monitorEvent(shared_from_this());
}
};
@ -182,7 +188,7 @@ struct SpamChannel : public pva::Channel,
{
const std::tr1::shared_ptr<pva::ChannelProvider> provider;
const std::string name;
const pva::ChannelRequester::shared_pointer requester;
const pva::ChannelRequester::weak_pointer requester;
SpamChannel(const std::tr1::shared_ptr<pva::ChannelProvider>& provider,
const std::string& name,
@ -197,7 +203,7 @@ struct SpamChannel : public pva::Channel,
virtual std::string getRemoteAddress() OVERRIDE FINAL {return "";}
virtual ConnectionState getConnectionState() OVERRIDE FINAL {return CONNECTED;}
virtual std::tr1::shared_ptr<pva::ChannelRequester> getChannelRequester() OVERRIDE FINAL { return requester; }
virtual pva::ChannelRequester::shared_pointer getChannelRequester() OVERRIDE FINAL { return pva::ChannelRequester::shared_pointer(requester); }
virtual void destroy() OVERRIDE FINAL {}
@ -290,6 +296,10 @@ int main(int argc, char *argv[]) {
<<show_referrers(server, false);
server.reset();
std::cout<<"threads\n";
std::cout.flush();
epicsThreadShowAll(0);
std::cout<<"provider use_count="<<provider.use_count()<<"\n"
<<show_referrers(provider, false);
if(!provider.unique())