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_connectorto 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_connectoravailable on Linux. This connector, along with vsomeip3.5.4 introduction of theRS_DELAYED_RESUMErouting state, allows us to delay SD until the network is available.The simple_connector works by using QNX's
waitforto wait for a file whose creation indicates network availability. This file is created externally.The
simple_connectordoes 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_SDandVSOMEIP_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.)