Modify network detection on QNX to delay SD #841
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Introducing a
simple_connector
to mimic thenetlink_connector
(in a very limited way) on QNX. This PR is not intended to be merged upstream, but instead serves as a discussion topic and example.Description
Implemented a "simple_connector" to mimic the
netlink_connector
available on Linux. This connector, along with vsomeip3.5.4 introduction of theRS_DELAYED_RESUME
routing state, allows us to delay SD until the network is available.The simple_connector works by using QNX's
waitfor
to wait for a file whose creation indicates network availability. This file is created externally.The
simple_connector
does not continue to monitor the network. It simply notifies the routing_manager the first time the network is available.That said, the interface does allow for easy extension in the future
This behaviour is controlled with the env vars
VSOMEIP_USE_ASYNCHRONOUS_SD
andVSOMEIP_WAIT_FOR_INTERFACE
.An alternative implementation would be to use PPS, but that isn't available by default on our deployment of QNX 7.
This implementation has a reduced foot print from earlier implementations and also does not modify any interfaces.
Notes
waitfor
. The original implementation had a configurable timeout, however because timing out left us in an error state anyways, this timeout was removed (raised tonumeric_limits<int>::max()
= ~45 days, give or take.)