Starlingmonkey timers #798
Merged
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.
This integrates Fastly support for timers on top of the new
deadline()
hook on AsyncTask for StarlingMonkey, which is supported by StarlingMonkey timers.Timers are represented by a handle that is never used in Fastly's host call model. When encountering a timer in the select host hook we check its deadline and progress it if it is ready. We also bound the select call timeout now by the least deadline when timer tasks are present, as we previously implemented.
This architecture also exposes an implementation gap in that setting timers when no other async tasks were pending would never resolve. Without any other primitives to work with a busy loop is implemented in this case to properly support real timeouts and a new test is added. Alternatively, we could throw an error here but I strongly believe we should focus on supporting the code our users write instead of throwing for standard JS patterns.