From 3050323193e1aca6ff29978061e296d063f2fa44 Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Mon, 21 Jul 2014 11:29:22 +0200 Subject: [PATCH] added disconnect message to pvget/eget while monitoring --- pvtoolsSrc/eget.cpp | 5 ++++- pvtoolsSrc/pvget.cpp | 5 ++++- pvtoolsSrc/pvutils.cpp | 15 ++++++++++++--- pvtoolsSrc/pvutils.h | 6 ++++-- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/pvtoolsSrc/eget.cpp b/pvtoolsSrc/eget.cpp index 627df58..8689ffb 100644 --- a/pvtoolsSrc/eget.cpp +++ b/pvtoolsSrc/eget.cpp @@ -1804,7 +1804,10 @@ int main (int argc, char *argv[]) if (monitor) { - shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); + shared_ptr channelRequesterImpl = dynamic_pointer_cast(channel->getChannelRequester()); + channelRequesterImpl->showDisconnectMessage(); + + shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); channel->createMonitor(monitorRequesterImpl, pvRequest); } else diff --git a/pvtoolsSrc/pvget.cpp b/pvtoolsSrc/pvget.cpp index 313649d..e334fad 100644 --- a/pvtoolsSrc/pvget.cpp +++ b/pvtoolsSrc/pvget.cpp @@ -527,7 +527,10 @@ int main (int argc, char *argv[]) } else { - shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); + shared_ptr channelRequesterImpl = dynamic_pointer_cast(channel->getChannelRequester()); + channelRequesterImpl->showDisconnectMessage(); + + shared_ptr monitorRequesterImpl(new MonitorRequesterImpl(channel->getChannelName())); Monitor::shared_pointer monitorGet = channel->createMonitor(monitorRequesterImpl, pvRequest); allOK &= true; } diff --git a/pvtoolsSrc/pvutils.cpp b/pvtoolsSrc/pvutils.cpp index 3a86132..ce3c144 100644 --- a/pvtoolsSrc/pvutils.cpp +++ b/pvtoolsSrc/pvutils.cpp @@ -212,7 +212,7 @@ char *url_encode(const char *str) { ChannelRequesterImpl::ChannelRequesterImpl(bool _printOnlyErrors) : - printOnlyErrors(_printOnlyErrors) + printOnlyErrors(_printOnlyErrors), showDisconnectMsg(false) { } @@ -243,13 +243,18 @@ void ChannelRequesterImpl::channelCreated(const epics::pvData::Status& status, C } } -void ChannelRequesterImpl::channelStateChange(Channel::shared_pointer const & /*channel*/, Channel::ConnectionState connectionState) +void ChannelRequesterImpl::channelStateChange(Channel::shared_pointer const & channel, Channel::ConnectionState connectionState) { if (connectionState == Channel::CONNECTED) { m_event.signal(); } - /* + else if (showDisconnectMsg && connectionState == Channel::DISCONNECTED) + { + std::cerr << std::setw(30) << std::left << channel->getChannelName() + << ' ' << "*** disconnected" << std::endl; + } + /* else if (connectionState != Channel::DESTROYED) { std::cerr << "[" << channel->getChannelName() << "] channel state change: " << Channel::ConnectionStateNames[connectionState] << std::endl; @@ -262,6 +267,10 @@ bool ChannelRequesterImpl::waitUntilConnected(double timeOut) return m_event.wait(timeOut); } +void ChannelRequesterImpl::showDisconnectMessage(bool show) +{ + showDisconnectMsg = show; +} GetFieldRequesterImpl::GetFieldRequesterImpl(epics::pvAccess::Channel::shared_pointer channel) : diff --git a/pvtoolsSrc/pvutils.h b/pvtoolsSrc/pvutils.h index af319ac..a736d90 100644 --- a/pvtoolsSrc/pvutils.h +++ b/pvtoolsSrc/pvutils.h @@ -53,7 +53,8 @@ class ChannelRequesterImpl : private: epics::pvData::Event m_event; bool printOnlyErrors; - + bool showDisconnectMsg; + public: ChannelRequesterImpl(bool printOnlyErrors = false); @@ -65,6 +66,7 @@ class ChannelRequesterImpl : virtual void channelStateChange(epics::pvAccess::Channel::shared_pointer const & channel, epics::pvAccess::Channel::ConnectionState connectionState); bool waitUntilConnected(double timeOut); + void showDisconnectMessage(bool show = true); }; class GetFieldRequesterImpl : @@ -98,4 +100,4 @@ struct dump_stack_only_on_debug dump_stack_only_on_debug(const epics::pvData::Status &s) : status(s) {} }; -std::ostream& operator<<(std::ostream& os, const dump_stack_only_on_debug& d); \ No newline at end of file +std::ostream& operator<<(std::ostream& os, const dump_stack_only_on_debug& d);