Commit Graph

705 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 53b95dd336 more SharedPV rpc state tracking
handle re-open() with RPC
2018-10-06 17:55:57 -07:00
Michael Davidsaver f6eeeac649 more UDP debugging 2018-10-04 21:08:15 -07:00
Michael Davidsaver 48770f132f fix global string constants 2018-10-04 21:08:15 -07:00
Michael Davidsaver 605c172d3c fix SharedPV allow rpc() while close()'d
Don't call channelRPCConnect() again during open().

Turns out that a second channelRPCConnect() has
the effect of sending a reply with OK and NULL.
2018-10-04 07:31:01 -07:00
Michael Davidsaver 542d51a215 RPC troubleshooting
something funny is going on
2018-10-03 23:41:30 -07:00
Michael Davidsaver abc1b448d5 minor 2018-10-03 23:41:30 -07:00
Michael Davidsaver 421d50e3ba SharedPV too many notifiedConn
notifiedConn set more often than it should.
2018-10-03 18:36:32 -07:00
Michael Davidsaver e67e00c968 client.h minor 2018-10-03 18:36:32 -07:00
Michael Davidsaver d4f3abf461 more descriptive UDP logging 2018-10-02 12:52:24 -07:00
Michael Davidsaver 2fec84461d use of CMD_* instead of magic numbers 2018-10-02 12:52:24 -07:00
Michael Davidsaver e6902ee41f avoid UB in decodeAsIPv6Address()
Order of evaluation within an expression is
undefined behavior.
2018-10-02 12:52:24 -07:00
Michael Davidsaver 4e5aef3e42 SharedPV allow rpc() while close()'d
No reason to prevent this as RPCs need not use
the same type (Structure) as get/put/monitor.
2018-10-02 12:52:24 -07:00
Michael Davidsaver 4296c5e015 more SharedPV::close() 2018-09-27 13:56:13 -07:00
Michael Davidsaver 83b2105241 StaticProvider createChannel() avoid possible deadlock
connect() may invoke SharedPV onFirstConnect() callback.
2018-09-26 16:38:22 -07:00
Michael Davidsaver 7ed6f1315f SharedPV::open() less work under lock 2018-09-26 10:31:33 -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 31261cee24 client context less noise 2018-09-25 18:55:21 -07:00
Michael Davidsaver 6b463d77e1 SharedPV ensure callback pairing
Ensure that onLastDisconnect() isn't called
unless onFirstConnect() is/has been called.
2018-09-21 11:35:57 -07:00
Michael Davidsaver a6eca51fa0 StaticProvider dtor close() with destroy=true 2018-09-21 11:35:57 -07:00
Michael Davidsaver 293dd3c2e9 sharedpv simplify logic
duh... always empty() after clear()
2018-09-21 11:35:57 -07:00
Michael Davidsaver 52e0bd09f8 sharedpv: defend against dying objects in SharedPV::close()
Likely when destroy=true
2018-09-21 11:35:57 -07:00
Michael Davidsaver 5f03fafba7 sharedstate minor doc 2018-09-21 11:35:57 -07:00
Michael Davidsaver 3bc1603f47 SharedPV.close() call onLastDisconnect()
ensure that onLastDisconnect() is called when
the channels list becomes empty (edge), and
not afterwards.
2018-09-21 11:35:57 -07:00
Michael Davidsaver 9ec0172520 sharedstate: close() from dtor 2018-09-21 11:35:57 -07:00
Michael Davidsaver dd1e2b4048 sharedstate handle compute() error internally 2018-09-21 11:35:57 -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 643f7e47c8 Apply PVRequestMapper to shared state put/get 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
Andrew Johnson 28002fa6d7 Merge pull request #121 from epics-base/issue119
From Marty, fixes #119
2018-08-29 13:56:27 -05:00
Andrew Johnson 24b80151d5 Merge pull request #120 from epics-base/issue118
caProvider: Fixes issue #118 and adds more put/get equality tests for pvScalar
2018-08-13 10:22:08 -05: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
mrkraimer f210c81e45 fix issue 119 2018-08-02 05:55:22 -04:00
mrkraimer 9ec087c7ed fix issue 118; add put/get equal tests for pvScalar 2018-08-01 09:40:09 -04:00
Michael Davidsaver e52d31d0bf Get2PutProxy pass along messages 2018-07-31 18:48:23 -07:00
Michael Davidsaver 8b60d87e42 pvac fix MailboxHandler
This is why OVERRIDE is so important...
2018-07-31 18:48:23 -07:00
Michael Davidsaver f39174cb74 StaticProvider need to expose iterator type 2018-07-17 20:42:21 -07:00
Andrew Johnson 613bfc5289 Merge pull request #96 from mrkraimer/master
Merged Marty's rewrite of the CA provider
2018-07-17 11:00:10 -05: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 f4b245710d sharedstate: Get use pvRequest field selection mask 2018-07-14 15:00:15 -07:00
Michael Davidsaver 2912112419 MonitorFIFO use pvRequest field selection mask 2018-07-14 15:00:15 -07:00
Michael Davidsaver bf8b0bde16 quiet warning 2018-07-14 13:58:00 -07:00
mrkraimer df45c70149 add putDoneThread and getDoneThread; fix issue 114 2018-07-14 11:46:26 -04:00
Michael Davidsaver e29cda2a74 sharedstate: missed a reftrack 2018-07-11 18:14:54 -07:00
Michael Davidsaver 512cc11923 client: avoid race during monitor shutdown
poll() vs. cancel()
2018-07-09 15:19:52 -07:00
Bruno Martins 3caea5991a Fix PutCallback type comparison. Fix #112 2018-07-09 08:59:51 -07:00