Commit Graph

485 Commits

Author SHA1 Message Date
Michael Davidsaver f45de1de68 client minor locking 2017-11-16 17:38:11 -06:00
Michael Davidsaver 8e846b02bc tighten up validation 2017-11-16 17:38:11 -06:00
Michael Davidsaver cc9c666731 Improve client pvRequest option parsing
Give some notice of parse errors
2017-11-16 17:38:11 -06:00
Michael Davidsaver 00e01d5211 tighten up client operation send state handling 2017-11-16 17:03:10 -06:00
Michael Davidsaver 1d56ee7283 pva client ignore CMD_DESTROY_REQUEST reply.
Presently CMD_DESTROY_REQUEST and CMD_CANCEL_REQUEST aren't acknowledged.
This allows ambiguity in when the request ioid goes out of scope.

Currently, the client forgets about an ioid as soon as the destroy request is sent.
So any in-flight response will be erroneously flagged as "Undecipherable message".

Similarly, a cancel request can cross paths with a reply.
This creates confusion in the event the client starts a new
request immediately after canceling the first.

Let's build some forward compatibility by ignoring replies to
cancel and destroy requests.
2017-11-16 17:03:10 -06:00
Michael Davidsaver b3fcffb18e avoid magic number 2017-11-16 14:56:59 -06:00
Michael Davidsaver 6f39f02f3a more client locking violations
As with #72 more use of m_pendingRequest w/o locking
2017-11-16 14:56:48 -06:00
Michael Davidsaver ba3b777978 missed one
cf 2f0bb7d448
2017-11-16 11:18:13 -06:00
Michael Davidsaver 5bcbc0d717 Incorrect locking in client monitor 2017-11-15 20:02:25 -06:00
Michael Davidsaver 2f0bb7d448 "Not-a-first segmented message" is a critical error
Let's try to scare users into reporting it more promptly.
2017-11-15 19:38:26 -06:00
mrkraimer 784c6665a6 make pvRequest weak_pointer for get, put, and monitor 2017-11-14 09:11:27 -05:00
mrkraimer 6cd7de069a remove lastRequest messages; in activate only make callback if connected 2017-11-13 05:53:24 -05:00
Michael Davidsaver 3b565d0c56 server GetField ensure no duplicate reply 2017-11-06 16:48:34 -06:00
Michael Davidsaver 84a0729bcf minor 2017-11-06 16:27:52 -06:00
Michael Davidsaver c469d49ecb server: keep most recent GetFieldRequester alive 2017-11-06 16:27:43 -06:00
Michael Davidsaver 0ec4e16373 skip unnecessary static_pointer_casts 2017-11-06 16:12:13 -06:00
Michael Davidsaver 576b241faa consolidate TransportClient and ChannelImpl as ClientChannelImpl 2017-11-06 15:51:43 -06:00
Michael Davidsaver 7118e34222 merge DataResponse into ResponseRequest
DataResponse is only sub-"interface"/class of ResponseRequest.
2017-11-06 15:26:05 -06:00
Michael Davidsaver 3154e3431e consolidate SubscriptionRequest with BaseRequestImpl
"interface" with a single implementation.
combine and de-virtualize
2017-11-06 15:22:09 -06:00
Michael Davidsaver 073c77b1ef consolidate ServerChannel and ServerChannelImpl
"interface" with a single implementation.
combine and de-virtualize.
2017-11-06 15:14:41 -06:00
Michael Davidsaver 46df4c07ca cleanup ServerChannelImpl
const-ify and remove descriptive comments
2017-11-06 14:58:15 -06:00
Michael Davidsaver 5f78671b36 compose ServerResponseHandler 2017-11-06 14:47:10 -06:00
Michael Davidsaver 1d7f15de25 combine AbstractResponseHandler and ResponseHandler 2017-11-06 14:27:46 -06:00
Michael Davidsaver 3071a06000 cleanup server response handlers
avoid unnecessary dynamic_cast and ref. counter activity
2017-11-06 14:07:02 -06:00
Michael Davidsaver aaef110507 eliminate ChannelHostingTransport
an "interface" used once.  Drop it and de-virtualize.
2017-11-06 13:41:58 -06:00
Michael Davidsaver dcb74b781d be explicit about epics::auto_ptr 2017-11-06 12:46:13 -06:00
Michael Davidsaver 9bf03fbfbe no more returning auto_ptr 2017-11-06 12:44:36 -06:00
Michael Davidsaver 0fde239f23 std::auto_ptr -> epics::auto_ptr 2017-11-06 12:37:42 -06:00
Michael Davidsaver f91b593aea no need to dllexport inline class w/o virtuals 2017-11-06 11:02:08 -06:00
Michael Davidsaver 161280220e avoid std::min 2017-11-06 10:57:09 -06:00
Michael Davidsaver 7b301c4c98 pvasr() call Channel::printInfo() 2017-11-05 17:26:52 -06:00
Michael Davidsaver 8d5c27143b pvasr list client channels 2017-11-05 17:11:28 -06:00
Michael Davidsaver 49173ec884 disable pvAccessMB and unused ref-counting boilerplate 2017-11-05 16:54:10 -06:00
Michael Davidsaver 5e900b1f11 remove super abstract authNZInitialize(void*)
with separate client and server calls.

Still dynamic_cast ugliness as Transport and Codec
hierarchies don't have a common root.
2017-11-05 16:41:59 -06:00
Michael Davidsaver 47332fdf90 server status reporting via iocsh 2017-11-05 15:59:01 -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 7ca0688326 second destroy() is a no-op 2017-11-01 14:17:55 -05:00
Michael Davidsaver e7c7d28339 add PVACommonRegister.dbd and iocreftrack.h
Allow use reftrack iocsh commands
w/o pulling in server (or client) singleton,
or including any .dbd (for P2P).
2017-11-01 14:17:55 -05:00
mrkraimer 84976121d3 remove obsolete reference counting 2017-10-10 10:09:49 -04:00
mrkraimer adcf13f02f Merge https://github.com/epics-base/pvAccessCPP 2017-10-10 09:00:14 -04:00
Michael Davidsaver 393ac72785 minor doc 2017-10-05 15:33:48 +02:00
Michael Davidsaver 60c97c3e88 drop MBLIB 2017-10-05 11:10:27 +02:00
Michael Davidsaver e14b811b53 install CONFIG_PVA_CORE 2017-10-05 11:00:01 +02:00
mrkraimer 303536401f Merge https://github.com/epics-base/pvAccessCPP 2017-10-04 10:54:28 -04: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
mrkraimer 35edb7346f Merge https://github.com/epics-base/pvAccessCPP 2017-09-30 10:40:48 -04:00
Michael Davidsaver 9460fab294 pvac: ClientProvider ctor from ChannelProvider 2017-09-29 16:22:19 -05:00
Michael Davidsaver b1444b6192 client: fix monitor crash on type change 2017-09-29 15:23:14 -05:00