Commit Graph
123 Commits
Author SHA1 Message Date
Michael Davidsaver 165313d8f5 client.h add some exception guards
These are one shot operations anyway,
and allowing user exceptions to propagate
to core PVA isn't helpful.
2018-10-07 20:07:40 -07:00
Michael Davidsaver abc1b448d5 minor 2018-10-03 23:41:30 -07:00
Michael Davidsaver e67e00c968 client.h minor 2018-10-03 18:36:32 -07:00
Michael Davidsaver 51bc630755 add pvac::ClientChannel::info() 2018-09-26 10:28:18 -07:00
Michael Davidsaver 855335f3b1 client.h guard concurrent callbacks on cancel
cancel() blocks until concurrent callbacks have
completed.  Also serializes any callbacks for each
Operation/Monitor.
2018-09-26 10:28:18 -07:00
Michael Davidsaver d01421bf30 client.h cleanup 2018-09-26 10:28:18 -07:00
Michael Davidsaver f7f4822c08 pva/client.h separate Get and Put
Apparently some servers (pvDatabase) have different
behavior for ChannelGet::get() and ChannelPut::get() .

ClientChannel::get() now uses ChannelGet::get()
while ClientChannel::put() will automatically
do a ChannelPut::get() and pass the result to
the putBuilder callback.
2018-09-26 10:25:31 -07:00
Michael Davidsaver 1f5c0eedcb MonitorFIFO: open() handle compute() error internally
Introduce Error state when open() fails due to invalid
pvRequest mapping.
2018-09-21 11:35:57 -07:00
Michael Davidsaver 527cb3fe62 MonitorFIFO use PVRequestMapper
MonitorFIFO add config option dropEmptyUpdates
really distinct from ignoreRequestMask
2018-09-21 11:35:57 -07:00
Michael Davidsaver 07af87fb0b pva/client.h RPC give dummy valid bit mask
avoid the need for a NULL check.
2018-08-06 20:34:27 -07:00
Michael Davidsaver e52d31d0bf Get2PutProxy pass along messages 2018-07-31 18:48:23 -07:00
Michael Davidsaver 8644f4230d client: simplify monitor type handling
I think the original logic is correct, but I'm not sure.
Cleverness to avoiding storing a Structure pointer is a
premature optimization anyway.
2018-07-15 19:22:43 -07:00
Michael Davidsaver 99f68dac04 monitorfifo better default config handling 2018-07-14 15:06:44 -07:00
Michael Davidsaver 2912112419 MonitorFIFO use pvRequest field selection mask 2018-07-14 15:00:15 -07:00
Michael Davidsaver 512cc11923 client: avoid race during monitor shutdown
poll() vs. cancel()
2018-07-09 15:19:52 -07:00
Bruno Martinsandmdavidsaver 3caea5991a Fix PutCallback type comparison. Fix #112 2018-07-09 08:59:51 -07:00
Michael Davidsaver c93f7a35f7 pva/client.h: no lastRequest()
until #97 is resolved.  Avoids annoying message.

https://github.com/epics-base/pvAccessCPP/issues/97
2018-06-29 16:22:57 -07:00
Michael Davidsaver 135f66393d pva/client.h: Get expose valid bitset
turns out this is useful after all.
2018-06-29 16:22:57 -07:00
Michael Davidsaver 80db41f1c4 pva/client.h Allow callbacks to unref Operations
Keep a local (internal) shared_ptr whenever
user callbacks are run.  This allows user
callbacks to drop (reset()/dtor) Operations
or Monitors safely.

Ref must to captured before mutex is locked,
which is safe as the internal weak_ptr is
not changed after build() (despite being non-const)
2018-06-29 16:22:57 -07:00
Michael Davidsaver 5e887a6d02 add MonitorFIFO 2018-06-26 19:06:47 -07:00
Michael Davidsaver a413f8f9db add dummy ChannelFind implementation.
Since this class is not really used...
2018-06-26 11:23:50 -07:00
Michael Davidsaver de6586b92f MonitorElement::Ref swap() and move, but no copy 2018-06-05 09:32:22 -07:00
Michael Davidsaver 578dbc9456 add another ChannelProviderRegistry::addSingleton() overload
Construct a "factory" around a pre-allocated instance.
2018-06-05 09:32:22 -07:00
Michael Davidsaver 8000ed0637 client.h default ctor for ClientProvider
Allow an invalid ClientProvider to be created
for later assignment.
2018-06-05 09:32:22 -07:00
Michael Davidsaver 794d72ba6b client.h MonitorSync missing init of member 2018-06-04 10:08:01 -07:00
Michael Davidsaver bd88e35448 client.h update doc 2018-05-16 09:14:49 -07:00
Michael Davidsaver 7cf78d5b9b client.h add ClientProvider::name() 2018-04-20 15:22:57 -07:00
Michael Davidsaver 3d85852c93 attempt to fix dllimport issue 2018-04-18 09:01:11 -07:00
Michael Davidsaver 61d43e498d client.h std::ostream printing 2018-04-10 16:19:03 -07:00
Michael Davidsaver 0d40464541 client.h: expose reset()
can also be accomplished with assignment from empty.

op = pvac::Operation()
2018-04-10 15:17:18 -07:00
Michael Davidsaver 0c6fe2c1c6 client.h: add validity test for all handles 2018-04-08 16:04:36 -07:00
Michael Davidsaver 4fcbdff580 missing includes 2018-03-19 15:36:21 -07:00
Michael Davidsaver acab4cd408 fix potential *NULL from Get2PutProxy 2018-03-08 11:42:56 -05:00
Michael Davidsaver b5bf6a4ccd client: (shallow) copy into Monitor::root
Avoid exposing refs. from monitor queue
which might then be used after release().
Also allows users the possibility of caching
getSubField() until root.get() actually changes.
2018-02-21 11:19:21 -08:00
Michael Davidsaver d33356ced6 drop deprecated 2018-01-31 12:48:59 -08:00
Michael Davidsaver c6b1786008 minor doc 2018-01-31 11:51:13 -08:00
Michael Davidsaver 4dcc8bffe1 minor 2017-12-12 09:57:24 -06:00
Andrew Johnson 65b0ac1a32 Fixes needed for older VxWorks GCC 2017-11-29 16:44:19 -06:00
Michael Davidsaver bc0892a1ad workaround for older gcc 2017-11-28 17:54:25 -06:00
Michael Davidsaver d1cbb0abd5 pvac: ensure that listeners are done in ClientChannel
ensure no concurrent callback in progress
when removing listeners.
2017-11-22 14:20:26 -06:00
Michael Davidsaver 6055dbb983 pvac user internal/external refs. 2017-11-22 14:14:05 -06:00
Michael Davidsaver 250826ffb9 add reftrack to pvac 2017-11-22 12:32:38 -06:00
Michael Davidsaver dc99e2ae4c add ChannelProviderRegistry::addSingleton()
Helper for providers of singleton resources.
Useful for process-wide resources like the PDB.
2017-11-05 12:22:39 -06:00
Michael Davidsaver 5f96f5722e pvac: client monitor locking 2017-11-05 12:19:10 -06:00
Michael Davidsaver 393ac72785 minor doc 2017-10-05 15:33:48 +02:00
Michael Davidsaver 4eb8856a00 pvac: fix MonitorSync method name collision 2017-09-30 14:22:25 -05:00
Michael Davidsaver b806b7ca42 pvac: generalize sync. put() 2017-09-30 13:54:59 -05:00
Michael Davidsaver 9460fab294 pvac: ClientProvider ctor from ChannelProvider 2017-09-29 16:22:19 -05:00
Michael Davidsaver 25c7da43f2 pvac: better Requester names
pass through the client name (aka the channel name)
2017-09-06 13:49:46 -05:00
Michael Davidsaver 8a24f9cd9c Channel::createChannelProcess default ensure process=true 2017-09-06 12:48:03 -05:00