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
Michael Davidsaver
f4b245710d
sharedstate: Get 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
Michael Davidsaver
e29cda2a74
sharedstate: missed a reftrack
2018-07-11 18:14:54 -07:00
Michael Davidsaver
1a459d75d5
dllimport/export part 4
2018-07-06 16:00:33 -07:00
Michael Davidsaver
c61dad10c8
dllimport/export part 3
2018-07-06 15:33:40 -07:00
Michael Davidsaver
77b4934966
dllimport/export part 2
2018-07-06 14:59:29 -07:00
Michael Davidsaver
39e6e443aa
dllimport/export part 1
2018-07-06 14:41:32 -07:00
Michael Davidsaver
74c2ec1ec3
Add SharedPV
2018-06-29 16:55:27 -07:00
Michael Davidsaver
146fbbc719
add pva/server.h
2018-06-29 16:55:27 -07:00
Michael Davidsaver
a1a2e71ecc
fix ServerCancelRequestHandler::handleResponse
...
Thus far this has been dead code as ServerChannel::getRequest()
returned a Destroyable which was actually a BaseChannelRequester
sub-class, not a ChannelRequest sub-class.
2018-06-29 16:22:56 -07:00
Michael Davidsaver
3ffbf9c597
ServerChannel::_requests holds BaseChannelRequester
...
Make it a bit more obvious that things are backwards here.
2018-06-29 16:22:56 -07:00
Michael Davidsaver
1e04c91d3c
Server window fix clear
...
A leftover from when window_t held MonitorElement::Ref
which it no longer does.
2018-06-26 11:56:51 -07:00
Michael Davidsaver
c0126d9a1c
server: pipeline=true windowing
...
Implement flow control windows in the server itself,
so that this applies to all Monitor.
Then the reportRemoteQueueStatus() callback is only needed
to deliver the initial window update.
This is done by not calling Monitor::release() immediately
when pipeline=true. Rather, hold onto MonitorElement s
until an ack is received.
Also addresses a race with clearing _channelMonitor
vs. having send() queued at/after destroy().
2018-06-26 11:23:50 -07:00
Michael Davidsaver
656e2fcfd4
PVA server avoid possible data race
...
The operation member variable is set by from the
returned pointer, and within the *Connect callback.
Make sure these down race.
2018-06-26 11:23:50 -07:00
Michael Davidsaver
1ba48868f6
PVA server avoid lock order violation
...
There is a lock order violation when a server force disconnects it's clients while sending a final message to it (or concurrent close, or probably others). The entry points are channelStateChange() and operation send().
Fix is not to hold the channel mutex when destroy()ing operations.
epics::pvAccess::ServerChannelRPCRequesterImpl::destroy
locks RPC requester mutex
epics::pvAccess::ServerChannel::destroy
locks channel mutex
epics::pvAccess::ServerChannelRequesterImpl::channelStateChange
epics::pvAccess::ServerChannel::unregisterRequest
locks channel mutex
epics::pvAccess::ServerChannelRPCRequesterImpl::destroy
locks RPC requester mutex
epics::pvAccess::ServerChannelRPCRequesterImpl::send
2018-06-25 19:52:10 -07:00
Michael Davidsaver
e08de8c2df
detect Structure caching error
...
The assert in the client side copy is hit during
some kind of failure to keep the Field cache
up to date.
2018-06-22 13:28:49 -07:00
Michael Davidsaver
12e7b7864b
fix s_channelNameToProvider hack
...
Move from global to ServerContext, apply lock, and
properly test if no provider has claimed, eg an attempt
at unadvertised PV (still wouldn't work, but at least
wouldn't crash).
2018-05-18 17:04:07 -07:00
Michael Davidsaver
7a523dd948
drop unused NOMINMAX
2018-05-18 15:20:26 -07:00
Michael Davidsaver
ba41fa6d62
notes
2018-05-18 15:17:27 -07:00
Michael Davidsaver
ce19199edd
cleanup
2018-05-18 11:58:35 -07:00
Michael Davidsaver
6ccca1ce58
const-ify string constants
...
yes really...
2018-05-18 10:12:34 -07:00
Michael Davidsaver
6abfe9d196
server: cleanup handling of vector of providers
...
avoid keeping extra refs. situation is confusing
enough as it is.
2018-05-18 08:53:52 -07:00
Michael Davidsaver
ff5d51b221
server: shorter name for Timer thread
2018-04-04 20:55:57 -07:00
Michael Davidsaver
fe5780521b
Context::getSecurityPlugins() no return of non-const ref.
...
Return of map as non-const ref. allows callers to modify.
Probably unintended.
2018-04-04 09:09:43 -07:00
Michael Davidsaver
3859793405
serverContext explicitly close/flush Timer queue
2018-04-02 12:40:18 -07:00
Michael Davidsaver
a3d820cf57
DefaultBeaconServerStatusProvider avoid unnecessary ServerContext ref
...
breaks loop ServerContext -> beaconEmitter -> BSSP -> ServerContext
2018-04-02 12:39:46 -07:00
Michael Davidsaver
abed887d87
beaconEmitter: avoid ref. loop with Timer
...
emitter schedules itself and timer holds a ref.
while queued. So the emitter isn't destroyed
until the timer expires.
2018-04-02 12:38:42 -07:00
Michael Davidsaver
d6a29a2a86
beaconEmitter const-ify data members
2018-04-02 11:53:00 -07:00
Michael Davidsaver
28cec947ae
serverContext: collapse destroyAllTransports() into shutdown()
2018-04-02 11:47:20 -07:00
Michael Davidsaver
8d363f9fe7
server responseHandlers annotate OVERRIDE FINAL
2018-03-22 14:03:57 -07:00
Michael Davidsaver
3b53e81f2f
avoid destroy() w/ lock
2018-03-22 13:39:04 -07:00
Michael Davidsaver
e9cc8298a6
server monitor cleanup
...
ServerMonitorRequesterImpl::getChannelMonitor()
seems like no possibility of deadlock atm.
2018-03-22 13:34:55 -07:00
Michael Davidsaver
909cef9200
minor
2018-02-21 11:19:58 -08:00
Michael Davidsaver
5c1b638db5
avoid spurious Leak warning
...
copying an array just to see if it is empty
isn't so efficient.
2018-02-07 20:17:40 -08:00
Michael Davidsaver
9b828852c0
Transport::getRemoteAddress() return reference
...
make it clear that result is always !NULL
2018-02-01 19:09:44 -08:00
Michael Davidsaver
58f996fd98
update transportRegistry
...
avoid leaks of SOCKET and leaving mutex locked
when exceptions are thrown.
2018-02-01 18:54:25 -08:00
Michael Davidsaver
d33356ced6
drop deprecated
2018-01-31 12:48:59 -08:00
Michael Davidsaver
903d117485
pvAccessLog() add EPICS_PRINTF_STYLE()
...
and fixup incorrect specifiers
2017-12-28 10:49:54 -06:00
Michael Davidsaver
457d03508d
reduce noise
2017-12-12 09:57:24 -06:00
Michael Davidsaver
0161799c93
must zero osiSockAddr prior to use!
...
RTEMS depends on this or eg. bind()
will fail because comparison with
list of interface addresses is done
with memcmp()!
2017-11-28 17:54:25 -06: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
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