Commit Graph

1544 Commits

Author SHA1 Message Date
Michael Davidsaver
1e0523b7b9 client context. Prevent transport dtor under channel mutex.
m_channelMutex is locked recursively, so places like
disconnect(bool,bool) which purport to unlock for the
Transport detory actually don't as they are called
with m_channelMutex already locked.

Make a rather ugly hack of saving a ref to m_channel
at the various entry point.
2018-04-04 19:25:04 -07:00
Michael Davidsaver
c9c8fb369a client context explicitly close() timer queue 2018-04-04 18:53:22 -07:00
Michael Davidsaver
d4822f141c simplify InternalClientContextImpl::destroy()
Collapse internalDestroy() into destroy()
2018-04-04 18:50:58 -07:00
Michael Davidsaver
128d4b67f9 simplify InternalChannelImpl::destroy()
Collapse channel destroy(bool) and destroyChannel() into destroy()
2018-04-04 18:48:48 -07:00
Michael Davidsaver
e97354db61 client context collapse channel createChannel() into searchResponse() 2018-04-04 18:44:11 -07:00
Michael Davidsaver
bab32c332a codec: notes on thread self dtor 2018-04-04 18:40:46 -07:00
Michael Davidsaver
54bb30fd86 reftrack BlockingUDPTransport 2018-04-04 18:31:12 -07:00
Michael Davidsaver
a8e26123c7 minor doc 2018-04-04 18:31:12 -07:00
Michael Davidsaver
7f5eb1de4d BlockingClientTCPTransportCodec collapse closedNotifyClients() into internalClose() 2018-04-04 18:31:12 -07:00
Michael Davidsaver
0eabf10005 codec: drop unused _shutdownEvent
using epicsThread::exitWait() instead
2018-04-04 18:31:12 -07:00
Michael Davidsaver
192955e7b5 client context: don't call cancel()
it doesn't do anything!
2018-04-04 14:55:41 -07:00
Michael Davidsaver
83a941c070 channelSearchManager minor 2018-04-04 14:53:52 -07:00
Michael Davidsaver
18491f6eb3 const-ify AbstractClientResponseHandler::_context 2018-04-04 10:12:44 -07:00
Michael Davidsaver
9e090fa191 client context: avoid lock order violations
avoid ordering violation of calling checkAndGetTransport(),
which locks channel mutex, while request mutex is locked.
2018-04-04 10:12:44 -07:00
Michael Davidsaver
8068ab3454 eliminate unnecessary m_nullMonitorElement 2018-04-04 10:12:44 -07:00
Michael Davidsaver
40ecc93e9d client context: use mutex guards
whether this locking is necessary is another question...
2018-04-04 10:12:44 -07:00
Michael Davidsaver
f2164ddb5a fix typedef in security.h
Can't refer to typedef in (private) remote.h
from (public) security.h
2018-04-04 10:12:44 -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
eed26a166e testChannelAccess: loosen timestamp tests to reduce false positive failures 2018-04-02 11:45:33 -07:00
Michael Davidsaver
df14a19ae0 codec: eliminate internalPostClose()
no reason to distinguish before and after
send worker break is _requested_ (won't
actually be stopped).
2018-04-02 11:30:19 -07:00
Michael Davidsaver
434a43dfe1 codec: less force-ful shutdown
eliminate unused 'force' argument.
2018-04-02 10:46:57 -07:00
Michael Davidsaver
da85d39c0c codec: const-ify socket
Avoid possible data race of changing _channel
before worker threads are joined.
Was just using this as a boolean flag for a method
which is already guarded in BlockingTCPTransportCodec::close()
from being called twice.
2018-04-02 10:41:30 -07:00
Michael Davidsaver
38965bb847 codec: collapse internalDestroy() into internalClose() 2018-04-02 10:24:35 -07:00
Michael Davidsaver
6c2d20353a minor, avoid extra string copys 2018-03-28 13:59:33 -07:00
Michael Davidsaver
a6d86d2a3c hide MockTransportSendControl 2018-03-28 13:49:21 -07:00
Michael Davidsaver
735dc22e2d collapse SimpleChannelSearchManagerImpl into ChannelSearchManager
Virtual base with only one sub-class.  So avoid some unnecessary
indirection.
2018-03-28 13:37:42 -07:00
Michael Davidsaver
1a100a0955 client fix init order leading to *NULL
Avoid a race between the main thread alloc of SimpleChannelSearchManagerImpl
the the UDP socket worker trying to use the same.

Split allocation and initialization of search manager
around socket creation and worker start.

Also in-line initializeUDPTransport() to only call site.
2018-03-28 13:21:46 -07:00
Michael Davidsaver
aec1c7c9d7 client search: cleanup context pointer handling 2018-03-28 11:25:54 -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
4fcbdff580 missing includes 2018-03-19 15:36:21 -07:00
Michael Davidsaver
93196e6314 drop rtemsConfig.c
no longer needed.
2018-03-19 09:29:25 -07:00
Michael Davidsaver
8d262fc9fe simpler test harness main() 2018-03-13 18:55:49 -07:00
Andrew Johnson
9687555c98 Move epicsExit() call into pvAccessAllTests()
Needed on VxWorks to display the test summary.
2018-03-13 13:46:56 -05:00
Andrew Johnson
802efbd6c1 Rename vxTestHarness -> pvaTestHarness
Integrate with Michael's similar changes for RTEMS.
2018-03-13 13:46:14 -05:00
Michael Davidsaver
0e61565308 rename rtemsTestHarness -> pvaTestHarness
avoid name clash with rtemsTestHarness
from pvDataCPP.
2018-03-12 09:13:59 -07:00
Michael Davidsaver
af2adf9248 pvlist remove comma
some shells will include the trailing ',' in selection
when double clicking.  Users find this annoying.
2018-03-08 11:43:36 -05:00
Michael Davidsaver
acab4cd408 fix potential *NULL from Get2PutProxy 2018-03-08 11:42:56 -05:00
Michael Davidsaver
23c2ed3484 spamme respond to all spam
match the prefix "spam" to allow
clients to subscribe eg. "spam1"
and "spam2" to test concurrent
streaming and load balancing.
2018-02-27 17:35:16 -08:00
Michael Davidsaver
74fbd22d40 pvput: fix enum_t
Need to get value.choices
2018-02-27 14:29:50 -08:00
Michael Davidsaver
d605eaca11 pvput avoid unnecessary iteration 2018-02-27 13:27:38 -08:00
Michael Davidsaver
ef74bdeccd Merge remote-tracking branch 'origin/master'
* origin/master:
  implement suggestions from Andrew
  termination and error handling changes.
2018-02-21 11:20:20 -08:00
Michael Davidsaver
909cef9200 minor 2018-02-21 11:19:58 -08: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