From 97d9dc2034a1e2b790e5565d4bbaf71efeb1c6fa Mon Sep 17 00:00:00 2001 From: mrkraimer Date: Tue, 8 Aug 2017 06:23:35 -0400 Subject: [PATCH] add more calbacks; documentation changes --- .../htmldoxygen/pvaClientGetRequester.html | 17 +++++++++- .../pvaClientMonitorRequester.html | 23 ++++++++++++- .../htmldoxygen/pvaClientPutRequester.html | 21 +++++++++++- src/pv/pvaClient.h | 34 ++++++++++++++----- src/pvaClientMonitor.cpp | 3 +- 5 files changed, 85 insertions(+), 13 deletions(-) diff --git a/documentation/htmldoxygen/pvaClientGetRequester.html b/documentation/htmldoxygen/pvaClientGetRequester.html index e2fe9f6..ad7fd7b 100644 --- a/documentation/htmldoxygen/pvaClientGetRequester.html +++ b/documentation/htmldoxygen/pvaClientGetRequester.html @@ -35,8 +35,23 @@

PvaClientGetRequester

+

This is a virtual class that can be implemented by a client that uses PvaClientGet. +It has the methods:

+
+virtual void channelGetConnect(
+    const Status& status,
+    PvaClientGetPtr const & clientGet) {}
+virtual void getDone(
+    const Status& status,
+    PvaClientGetPtr const & clientGet) = 0;
+
+ +

The client must call

+
+pvaClientGet->setRequester(shared_from_this());
+

-Not Yet Written +after creating an instance of PvaClientGet.

diff --git a/documentation/htmldoxygen/pvaClientMonitorRequester.html b/documentation/htmldoxygen/pvaClientMonitorRequester.html index 43d36bd..31daa94 100644 --- a/documentation/htmldoxygen/pvaClientMonitorRequester.html +++ b/documentation/htmldoxygen/pvaClientMonitorRequester.html @@ -35,10 +35,31 @@

PvaClientMonitorRequester

+

This is a virtual class that can be implemented by a client that uses PvaClientMonitor. +It has the methods:

+
+virtual void monitorConnect(
+    const Status& status,
+    PvaClientMonitorPtr const & clientMonitor,
+    StructureConstPtr const & structure) {}
+virtual void event(
+    PvaClientMonitor const & clientGet) = 0;
+virtual void unlisten()
+{
+     std::cerr << "PvaClientMonitorRequester::unlisten called"
+               << " but no PvaClientMonitorRequester::unlisten\n";
+}
+
+ +

The client must call

+
+pvaClientMonitor->setRequester(shared_from_this());
+

-Not Yet Written +after creating an instance of PvaClientMonitor.

+ diff --git a/documentation/htmldoxygen/pvaClientPutRequester.html b/documentation/htmldoxygen/pvaClientPutRequester.html index 00aed26..9206b6b 100644 --- a/documentation/htmldoxygen/pvaClientPutRequester.html +++ b/documentation/htmldoxygen/pvaClientPutRequester.html @@ -35,10 +35,29 @@

PvaClientPutRequester

+

This is a virtual class that can be implemented by a client that uses PvaClientPut. +It has the methods:

+
+virtual void channelPutConnect(
+    const Status& status,
+    PvaClientPutPtr const & clientPut) {}
+virtual void getDone(
+    const Status& status,
+    PvaClientPutPtr const & clientPut) {}
+virtual void putDone(
+    const Status& status,
+    PvaClientPutPtr const & clientPut) = 0;
+
+ +

The client must call

+
+pvaClientPut->setRequester(shared_from_this());
+

-Not Yet Written +after creating an instance of PvaClientPut.

+ diff --git a/src/pv/pvaClient.h b/src/pv/pvaClient.h index 53e8cbd..59ef1b5 100644 --- a/src/pv/pvaClient.h +++ b/src/pv/pvaClient.h @@ -196,7 +196,7 @@ typedef std::tr1::shared_ptr PvaClientPutCachePtr; * Overview of PvaClientChannelStateChangeRequester * */ -class PvaClientChannelStateChangeRequester +class epicsShareClass PvaClientChannelStateChangeRequester { public: POINTER_DEFINITIONS(PvaClientChannelStateChangeRequester); @@ -1023,7 +1023,7 @@ typedef std::tr1::shared_ptr ChannelGetRequesterImplPtr * * Overview of PvaClientGetRequester */ -class PvaClientGetRequester +class epicsShareClass PvaClientGetRequester { public: POINTER_DEFINITIONS(PvaClientGetRequester); @@ -1035,7 +1035,9 @@ public: */ virtual void channelGetConnect( const epics::pvData::Status& status, - PvaClientGetPtr const & clientGet); + PvaClientGetPtr const & clientGet) + { + } /** @brief A get request is complete. * * @param status The status returned by the server. @@ -1043,7 +1045,7 @@ public: */ virtual void getDone( const epics::pvData::Status& status, - PvaClientGetPtr const & clientGet); + PvaClientGetPtr const & clientGet) = 0; }; /** * @brief An easy to use alternative to ChannelGet. @@ -1188,7 +1190,7 @@ typedef std::tr1::shared_ptr ChannelPutRequesterImplPtr * * Overview of PvaClientPutRequester */ -class PvaClientPutRequester +class epicsShareClass PvaClientPutRequester { public: POINTER_DEFINITIONS(PvaClientPutRequester); @@ -1200,7 +1202,9 @@ public: */ virtual void channelPutConnect( const epics::pvData::Status& status, - PvaClientPutPtr const & clientPut); + PvaClientPutPtr const & clientPut) + { + } /** @brief A get request is complete. * * @param status The status returned by the server. @@ -1208,7 +1212,9 @@ public: */ virtual void getDone( const epics::pvData::Status& status, - PvaClientPutPtr const & clientPut); + PvaClientPutPtr const & clientPut) + { + } /** @brief A put request is complete. * * @param status The status returned by the server. @@ -1216,7 +1222,7 @@ public: */ virtual void putDone( const epics::pvData::Status& status, - PvaClientPutPtr const & clientPut); + PvaClientPutPtr const & clientPut) = 0; }; /** @@ -1511,10 +1517,20 @@ private : * * Overview of PvaClientMonitorRequester */ -class PvaClientMonitorRequester +class epicsShareClass PvaClientMonitorRequester { public: POINTER_DEFINITIONS(PvaClientMonitorRequester); + /** @brief The server has returned a message that the monitor is connected. + * + * @param status Completion status. + * @param monitor The monitor + * @param structure The structure defining the data. + */ + virtual void monitorConnect(epics::pvData::Status const & status, + PvaClientMonitorPtr const & monitor, epics::pvData::StructureConstPtr const & structure) + { + } virtual ~PvaClientMonitorRequester() {} /** @brief A monitor event has occurred. * @param monitor The PvaClientMonitor that received the event. diff --git a/src/pvaClientMonitor.cpp b/src/pvaClientMonitor.cpp index 33088ca..e49dd51 100644 --- a/src/pvaClientMonitor.cpp +++ b/src/pvaClientMonitor.cpp @@ -263,7 +263,8 @@ void PvaClientMonitor::monitorConnect( } start(); } - + PvaClientMonitorRequesterPtr req(pvaClientMonitorRequester.lock()); + if(req) req->monitorConnect(status,shared_from_this(),structure); } void PvaClientMonitor::monitorEvent(MonitorPtr const & monitor)