Commit Graph

1716 Commits

Author SHA1 Message Date
Michael Davidsaver 0a5f8b44db doc 2018-10-18 15:18:00 -07:00
Michael Davidsaver ac9ebc47ba improper use of rand() w/o RAND_MAX
... with an extra dose of integer modulo thrown in.
2018-10-18 15:18:00 -07:00
Michael Davidsaver 9de8676a6f pvlist debugging 2018-10-18 15:18:00 -07:00
Michael Davidsaver 8d2edc0bb8 Merge commit '731767b086e8146f31c1f9038568e3c852c609f7'
* commit '731767b086e8146f31c1f9038568e3c852c609f7':
  SharedPV fix onFirstConnect() on monitor creation
  SharedPV allow use of Channel::destroy() to trigger onLastDisconnect()
  SharedPV defer onFirstConnect() to first getField/Put/Monitor
  client.h add some exception guards
  more SharedPV rpc state tracking
  more UDP debugging
  fix global string constants
  fix SharedPV allow rpc() while close()'d
  RPC troubleshooting
  minor
  SharedPV too many notifiedConn
  client.h minor
2018-10-08 09:56:37 -07:00
Michael Davidsaver 731767b086 SharedPV fix onFirstConnect() on monitor creation 2018-10-08 07:10:13 -07:00
Michael Davidsaver 9ca7487e29 SharedPV allow use of Channel::destroy() to trigger onLastDisconnect()
Add dead flag to catch double destroy() or use after destroy()
2018-10-07 20:07:40 -07:00
Michael Davidsaver ed1bd1b962 SharedPV defer onFirstConnect() to first getField/Put/Monitor 2018-10-07 20:07:40 -07:00
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
Evan J. Smith 30f07f2fb6 Changing default request string to 'field()' 2018-10-02 20:29:02 -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 68f284f687 fix epicschat example 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 eab36d5123 minor 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
Michael Davidsaver 281447c909 pvtools: force flush cout
Apparently windows CRT doesn't have a timed flush.
2018-09-17 10:37:36 -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
mrkraimer bef689d8c8 add more DBRlongout tests 2018-08-13 09:12:57 -04: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