Merge lp://staging/~epics-core/epics-base/fix-async-dns into lp://staging/~epics-core/epics-base/3.14
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Merge reported by: | Andrew Johnson | ||||||||
Merged at revision: | not available | ||||||||
Proposed branch: | lp://staging/~epics-core/epics-base/fix-async-dns | ||||||||
Merge into: | lp://staging/~epics-core/epics-base/3.14 | ||||||||
Diff against target: |
603 lines (+339/-81) 4 files modified
src/libCom/misc/ipAddrToAsciiAsynchronous.cpp (+171/-81) src/libCom/misc/ipAddrToAsciiAsynchronous.h (+4/-0) src/libCom/test/Makefile (+3/-0) src/libCom/test/ipAddrToAsciiTest.cpp (+161/-0) |
||||||||
To merge this branch: | bzr merge lp://staging/~epics-core/epics-base/fix-async-dns | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Andrew Johnson | Approve | ||
Ralph Lange | Approve | ||
Review via email: mp+318385@code.staging.launchpad.net |
Description of the change
An attempt to properly address the regressions exposed/uncovered by lp:1527636. Previous to that change the ipAddrToAscii worker thread was stopped by the last call to ipAddrToAsciiEn
The original code was still open to races when more than one call to ipAddrToAsciiEn
This branch attempt to achieve the best of both worlds. The worker thread is not stopped, but the semantics of release() are restored, and improved. The semantics of the API should be otherwise unchanged.
Instead of being a singleton ipAddrToAsciiEngine becomes an empty struct to trace references. The singleton is renamed ipAddrToAsciiGlobal and is fully hidden from user code.
Each all to ipAddrToAsciiEn
Calling ipAddrToAsciiEn
Subject to merge testing, accepted in principle at 3/14/2017 F2F meeting.